R 计算每个相同ID的行之间的增量

R 计算每个相同ID的行之间的增量,r,R,A有一个已排序的数据帧,我想计算每个相同ID的x2的增加量。 输入已按某种方式排序: ID x2 x3 x4 1 10 11 2 2 100 12 4 1 20 13 10 7 24 3 1 1 30 14 0 3 6 15 1 2 90 15 1 我想得到: ID x2 increase x3 x4 1 10 1

A有一个已排序的数据帧,我想计算每个相同ID的
x2
的增加量。 输入已按某种方式排序:

ID    x2   x3  x4 
1    10   11   2  
2   100   12   4   
1    20   13  10 
7    24    3   1 
1    30   14   0   
3     6   15   1   
2    90   15   1 
我想得到:

ID    x2   increase x3  x4 
1    10            11   2  
2   100            12   4   
1    20      +100% 13  10 
7    24             3   1 
1    30       +50% 14   0   
3     6            15   1   
2    90       -10% 15   1  
你可以

df <- read.table(header=T, text="
ID    x2   x3  x4 
1    10   11   2  
2   100   12   4   
1    20   13  10 
7    24    3   1 
1    30   14   0   
3     6   15   1   
2    90   15   1")
df$increase <- ave(df$x2, df$ID, FUN = function(x) c(NA, diff(x)/head(x, -1))*100)
df$increase <- ifelse(is.na(df$increase), "", sprintf("%+.0f%%", df$increase))
df
#   ID  x2 x3 x4 increase
# 1  1  10 11  2         
# 2  2 100 12  4         
# 3  1  20 13 10    +100%
# 4  7  24  3  1         
# 5  1  30 14  0     +50%
# 6  3   6 15  1         
# 7  2  90 15  1     -10%

df您能解释一下这个指令吗
df$increase
ave
通过
df$ID
分割数据,并返回长度为
nrow(df)
的向量。第一部分,
x
c(10L,20L,30L)
diff(x)
c(10L,10L)
head(x,1)
c(10L,20L)
。把它们分开会增加你的收入。我添加
NA
,因为第一个值没有增加。