溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

R語言怎樣以中國綜合社會調查2010數(shù)據(jù)為例實現(xiàn)出生日期轉換為年齡:

發(fā)布時間:2021-11-22 15:46:39 來源:億速云 閱讀:478 作者:柒染 欄目:大數(shù)據(jù)

這期內容當中小編將會給大家?guī)碛嘘PR語言怎樣以中國綜合社會調查2010數(shù)據(jù)為例實現(xiàn)出生日期轉換為年齡:,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

數(shù)據(jù)      

以中國綜合社會調查(cgss)2010數(shù)據(jù)為例,數(shù)據(jù)是以下形式的:

R語言怎樣以中國綜合社會調查2010數(shù)據(jù)為例實現(xiàn)出生日期轉換為年齡:

如上圖展示的數(shù)據(jù),調查項目很多(有上百個選項),需要我們選取所需的變量進行研究,另外部分數(shù)據(jù)是字符型的(如城市、是否、男女),還存在缺失值等等,這些都需要我們去進行整理與清洗,得到結構性的數(shù)據(jù)作下一步分析。


       

2


       
讀取文件并作出初步處理

1.文件“cgss2010”數(shù)據(jù)

在R中輸入如下代碼,先設置工作路徑:

setwd("D:/R回歸")getwd()

然后讀取文件:

data <- read.csv("cgss2010.csv", header = T, encoding="UTF8", na.strings = "NA")

2.經(jīng)過篩選變量、抽取部分樣本與缺失值處理等步驟,最終得到文件:

names(data)data1<-subset(data, select=c("ID","S5","S41","A2","A3A","A3B" ,"A3C","A4","A7A","A15","A8A","A36","L6A") )names(data1)set.seed(1)data2=data1[sample(nrow(data1), 300),] #隨機抽樣 300個樣本dim(data2)head(data2,5) #展示前5行數(shù)據(jù)is.na(data2) #查詢數(shù)據(jù)集中是否存在缺失數(shù)據(jù)colSums(is.na(data2)) #查詢每列的缺失值數(shù)量rowSums(is.na(data2)) #顯示缺失數(shù)據(jù)的行nrow(data2) #顯示行數(shù)data_trimmed <-na.omit(data2) #剔除缺失值nrow(data_trimmed)data_trimmed

以上代碼過程可參見《R語言的數(shù)據(jù)處理與數(shù)據(jù)清洗:以中國綜合社會調查(cgss)2010數(shù)據(jù)為例》。


       

3


       
出生日期轉換為年齡        

出生日期的數(shù)據(jù)呈現(xiàn)如下:

R語言怎樣以中國綜合社會調查2010數(shù)據(jù)為例實現(xiàn)出生日期轉換為年齡:

A3A、A3B、A3C分別代表出生年、月、日,若轉換為年齡,還需把這三個變量合并在一起,并轉換成日期格式,具體命令如下:

playdatetime <- paste(data_trimmed$A3A,data_trimmed$A3B,data_trimmed$A3C)playdatetimeplaydatetime <- lubridate::parse_date_time(playdatetime,"%y-%m-%d")playdatetimedatetime <- as.Date(playdatetime,format="%Y-%m-%d")

這里paste可以將任意數(shù)量的參數(shù)組合在一起;

lubridate::parse_date_time中

lubridate包

該主要有兩類函數(shù),一類用于處理時點數(shù)據(jù)(timeinstants),另一類則用于處理時段數(shù)據(jù)(time spans)。

parse_date_time是其中的函數(shù),它可以將格式各樣的日期時間字符轉換為日期時間類型的數(shù)據(jù)。該函數(shù)中有一個重要的參數(shù),即orders,通過該參數(shù)指定可能的日期格式順序,如年-月-日或月-日-年等順序;

as.Date就是把數(shù)據(jù)轉化成日期格式,以便于其他日期進行加減計算。

接下來就是以某個時間段為截止點,進行年齡計算,命令如下:

today <- "2021-02-28"today <- rep(today,length(data_trimmed$A3A))tod =as.Date(today,format="%Y-%m-%d")todday <- tod - datetimeage <- round(day/365)age

rep就是把today重復輸出,然后用as.Date轉化成日期格式;

最后就進行相減的計算;

得到的數(shù)值是多少天,而不是多少年或者多少歲,所以用day/365,轉換成多少歲,round()是取整數(shù)。

以上就會得到變量年齡的數(shù)值。

上述就是小編為大家分享的R語言怎樣以中國綜合社會調查2010數(shù)據(jù)為例實現(xiàn)出生日期轉換為年齡:了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI