【发布时间】:2013-11-19 11:23:36
【问题描述】:
美好的一天!
如果只有月份大于一个(从 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
对此有什么想法吗?
提前致谢!
【问题讨论】:
-
嗨!你能帮我理解你想要的结果吗?我假设'Feb.08 / a'的差异是值b - 值a,即8 - 5 = 3。但是你如何计算'Feb.08 / b'的差异?抱歉,我忽略了一些非常明显的事情。干杯。
标签: r if-statement for-loop