我真的很讨厌连续问两个问题,但这是我无法解决的问题。所以假设我有一个数据框,如下所示:
df
Row# User Morning Evening Measure Date
1 1 NA NA 2/18/11
2 1 50 115 2/19/11
3 1 85 128 2/20/11
4 1 62 NA 2/25/11
5 1 48 100.8 3/8/11
6 1 19 71 3/9/11
7 1 25 98 3/10/11
8 1 NA 105 3/11/11
9 2 48 105 2/18/11
10 2 28 203 2/19/11
11 2 35 80.99 2/21/11
12 2 91 78.25 2/22/11
在 R 中是否可以获取每个用户组的前连续一天(并且只有前一天,而不是前一个结果)晚上值 1 和不同行的早晨值之间的差异?所以我想要的结果是这样的。
df
Row# User Morning Evening Date Difference
1 1 NA NA 2/18/11 NA
2 1 50 115 2/19/11 NA
3 1 85 129 2/20/11 30
4 1 62 NA 2/25/11 NA
5 1 48 100.8 3/8/11 NA
6 1 19 71 3/9/11 81.8
7 1 25 98 3/10/11 46
8 1 10 105 3/11/11 88
9 2 48 105 2/18/11 NA
10 2 28 203 2/19/11 77
11 2 35 80.99 2/21/11 NA
12 2 91 78.25 2/22/11 -10.01
我想要做的就是取早上值,然后从每个用户组的前连续一天的晚上值中减去它。如您所见,我的数据框的某些部分在早晚列中包含 NA 值,此外,对于每个不同的用户,并非所有日期都是连续顺序的,因此自然应该分配 NA。
我试过搜索谷歌,但没有太多关于能够为不同列上的每组行应用函数到不同行的信息(如果有任何意义的话)。
我的尝试包括许多变化。
df$Difference<-ave((df$Morning,df$Evening),
df$User,
FUN=function(x){
c('NA',diff(df$Evening-df$Morning)),na.rm=T
})
再次,任何帮助将不胜感激。谢谢。