您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關R語言怎樣以中國綜合社會調查2010數據為例實現出生日期轉換為年齡:,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
以中國綜合社會調查(cgss)2010數據為例,數據是以下形式的:
如上圖展示的數據,調查項目很多(有上百個選項),需要我們選取所需的變量進行研究,另外部分數據是字符型的(如城市、是否、男女),還存在缺失值等等,這些都需要我們去進行整理與清洗,得到結構性的數據作下一步分析。
2
1.文件“cgss2010”數據
在R中輸入如下代碼,先設置工作路徑:
setwd("D:/R回歸")getwd()
然后讀取文件:
data <- read.csv("cgss2010.csv", header = T, encoding="UTF8", na.strings = "NA")
2.經過篩選變量、抽取部分樣本與缺失值處理等步驟,最終得到文件:
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行數據is.na(data2) #查詢數據集中是否存在缺失數據colSums(is.na(data2)) #查詢每列的缺失值數量rowSums(is.na(data2)) #顯示缺失數據的行nrow(data2) #顯示行數data_trimmed <-na.omit(data2) #剔除缺失值nrow(data_trimmed)data_trimmed
以上代碼過程可參見《R語言的數據處理與數據清洗:以中國綜合社會調查(cgss)2010數據為例》。
3
出生日期的數據呈現如下:
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可以將任意數量的參數組合在一起;
lubridate::parse_date_time中
lubridate包
該主要有兩類函數,一類用于處理時點數據(timeinstants),另一類則用于處理時段數據(time spans)。
parse_date_time是其中的函數,它可以將格式各樣的日期時間字符轉換為日期時間類型的數據。該函數中有一個重要的參數,即orders,通過該參數指定可能的日期格式順序,如年-月-日或月-日-年等順序;
as.Date就是把數據轉化成日期格式,以便于其他日期進行加減計算。
接下來就是以某個時間段為截止點,進行年齡計算,命令如下:
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轉化成日期格式;
最后就進行相減的計算;
得到的數值是多少天,而不是多少年或者多少歲,所以用day/365,轉換成多少歲,round()是取整數。
以上就會得到變量年齡的數值。
上述就是小編為大家分享的R語言怎樣以中國綜合社會調查2010數據為例實現出生日期轉換為年齡:了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。