我試圖在包含日期的一系列列上應用diff()。我感興趣的DATE1-DATE2,DATE2-DATE3之間的差異等所有日期都是按照順序排列的
我感興趣的是:
- 日期(天)之間的實際差異
- 如果行的所有日期(diff> = 0,按行)
我可以在一系列日期(例如在第一行 - >diff(unlist(df1[1,]))
)上使用diff()。我只需要應用這個每行,我想用apply(),但由於某種原因,我不能解決它。有些日期不見了,這在我的研究中是允許的。
希望這是你們很容易...
df <- structure(list(date1 = structure(c(-10871, -13634, -15937, -15937,
-290, -2323), class = "Date"), date2 = structure(c(16678, NA,16037, 16659,
16538, 16626), class = "Date"), date3 = structure(c(16685,16688, NA, 16659,
16568, 16672), class = "Date"), date4 = structure(c(16701, 16695, 16670,
16661, 16582, 16672), class = "Date"), date5 = structure(c(16709, 16695,
16661, 16667, 16619, 16692), class = "Date")), .Names = c("date1","date2",
"date3", "date4", "date5"), row.names = c("2", "3", "4", "5", "6", "7"),
class = "data.frame")
df
'apply'轉換一切'character',導致'diff'失敗。 – thelatemail
對於1,如果你指的是你的列(通常使用'diff'),你只需要'sapply(df,diff)'。 – alistaire
如果你的行的意思是1,'t(apply(df,1,function(x){diff(as.Date(x))}))',儘管你會失去你的列名。等價但有點醜,並保留列名:'t(sapply(1:nrow(df),function(x){diff(unlist(df [x,]))}))' – alistaire