目前我正在參與資料操作任務,以便創建一個資料表以供進一步分析。
假設在一個小資料框中有兩個日期列:
Treaty_Date.x Treaty_Date.y
1 2020-12-31 <NA>
2 <NA> 2019-05-22
3 2020-10-13 2019-09-01
第一個是“Treaty_Date.x”,第二個是“Treaty_Date.y”。NA 也可用。
實作下面給出的代碼(使用基本的“ifelse”函式撰寫),
ResSet2$Treaty_Date <- ifelse(
(is.na(ResSet2$Treaty_Date.x) & is.na(ResSet2$Treaty_Date.y)),
"No data",
ifelse(
(is.na(ResSet2$Treaty_Date.x) & !is.na(ResSet2$Treaty_Date.y)),
ResSet2$Treaty_Date.y,
ifelse(
(!is.na(ResSet2$Treaty_Date.x) & is.na(ResSet2$Treaty_Date.y)),
ResSet2$Treaty_Date.x,
ifelse(
(!is.na(ResSet2$Treaty_Date.x) & !is.na(ResSet2$Treaty_Date.y)),
ResSet2$Treaty_Date.y,
"No data"
)
)
)
)
新創建的“Treaty_Date”列中的日期變為數字(請參見下面的螢屏截圖)。鑒于為該功能提供的說明,我確實理解這是一個阻止我獲取正確格式的功能的功能。
Treaty_Date.x Treaty_Date.y Treaty_Date
1 2020-12-31 <NA> 18627
2 <NA> 2019-05-22 18038
3 2020-10-13 2019-09-01 18140
但是在我必須使用嵌套ifelse陳述句的情況下,如何克服這個“缺點”呢?
資料
ResSet2 <- structure(list(Treaty_Date.x = structure(c(18627, NA, 18548), class = "Date"),
Treaty_Date.y = structure(c(NA, 18038, 18140), class = "Date")), row.names = c(NA,
-3L), class = "data.frame")
uj5u.com熱心網友回復:
基本上,新列應該是條約日期 y,如果有的話,否則是條約日期 x,否則什么都沒有。另外一個選擇
ResSet2$Treaty_Date=ResSet2$Treaty_Date.y
ResSet2$Treaty_Date[is.na(ResSet2$Treaty_Date)]=
ResSet2$Treaty_Date.x[is.na(ResSet2$Treaty_Date)]
Treaty_Date.x Treaty_Date.y Treaty_Date
1 2020-12-31 <NA> 2020-12-31
2 <NA> 2019-05-22 2019-05-22
3 2020-10-13 2019-09-01 2019-09-01
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/420759.html
標籤:
