我是R程序员的新手。我有这个虚拟data.frame。
a b group
1 4 1
5 5 1
7 8 1
10 9 1
14 0 2
18 4 2
20 5 2
25 7 2
29 10 3
35 15 3
40 22 3
48 44 3
57 34 4
68 65 4
77 8 4
86 55 4
我想为a和b列产生第1组和第2组,第2组和第3组,第3组和第4组之间的差异。
我认为我是非常机械地做这件事。
感谢您的时间
答案 0 :(得分:1)
这里,OP提到'组有相同数量的元素,所以,一个选项是删除最后4个元素(head(df2, -4)[-3]
)和前4个元素(tail(df2, -4)[-3]
),这样我们就会得到1-2组,2-3组之间的列'a','b'的差异,因为'组是有序的。出于分类目的,cbind
使用paste
'{1}}元素创建'组'向量(通过删除第一个和最后一个元素)
unique
答案 1 :(得分:1)
这看起来像面板数据。您可以尝试plm
包。
mydata$index <- rep(1:4, 3) # or however many unique groups you have
mydata <- pdata.frame(mydata, c('index', 'group'))
diff_a <- diff(mydata$a)