美好的一天!
我需要找到两个日期之间特定系列的差异,如果只有月份大于1(从2月到12月)。
假设我有一张桌子
Date / variable / value
Jan.08 / a / 2
Jan.08 /b / 3
Feb.08 / a / 5
Feb.08 / b / 8
我需要以下结果
Date / variable / value / diff
Jan.08 / a / 2 / 2
Jan.08 /b / 3 / 3
Feb.08 / a / 5 / 3
Feb.08 / b / 8 / 5
我使用了这个功能
for (i in 1:nrow(df_tests)) {
if (format(df_tests$Date, "%m")!="01") {
df_tests[,4] <- ave(df_tests$value, df_tests$variable, FUN=function(x) c(NA, diff(x)))
} else {
df_tests[,4] <- df_tests$value
}
}
但它只是声明的第二部分
df_tests[,4] <- df_tests$value
我得到了这个结果
Date / variable / value / diff
Jan.08 / a / 2 / 2
Jan.08 /b / 3 / 3
Feb.08 / a / 5 / 5
Feb.08 / b / 8 / 8
对此有何看法?
提前致谢!
答案 0 :(得分:0)
请尝试以下代码:
for (i in 1:nrow(df_tests)) {
if (format(as.Date(paste("01.", df.tests$Date[i], sep = ""), format = "%d.%b.%y"), "%m")=="01") {
df_tests[i,4] <- ave(df_tests$value, df_tests$variable, FUN=function(x) c(NA, diff(x)))[i]
} else {
df_tests[i,4] <- df_tests$value[i]
}
}