基于列减去data.frame中的数字 - R.

时间:2017-03-21 03:08:27

标签: r dataframe grouping subtraction

我是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组之间的差异。

我认为我是非常机械地做这件事。

感谢您的时间

2 个答案:

答案 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)