如何在R中使用for循环从上面的行中减去一行?

时间:2019-11-25 10:13:03

标签: r for-loop dplyr

我正在尝试学习如何在R中用于循环,特别是要从R的一列中的数字中减去一个数字。

我知道可以使用b <- diff(df$a)或以下方法来实现此目的:

library(dplyr)
df %>% 
  mutate(b = a - lag(a)) 

但是我试图理解我如何也可以通过以下方式获得相同的结果:

for(i in 1:nrow(df)){
  result = df[2,] - df[i,]
  print (result)
}

我该如何设置for循环,以便df[2,]接收接下来的每一行,而不仅仅是第二行,并从上面的行中减去?

例如,我有这样的数据:

column a
1
10
20 

最后我想用减法创建一列:

column a    column b
1             10
11            9
20           ...

1 个答案:

答案 0 :(得分:2)

您可以像使用for循环

df$columnB <- NA

for(i in 1:(nrow(df) - 1)) {
   df$columnB[i] = df$columnA[i+1] - df$columnA[i]
}
df
#  columnA columnB
#1       1      10
#2      11       9
#3      20       5
#4      25       9
#5      34      NA

数据

使用的样本数据:

df <- data.frame(columnA  =  c(1, 11, 20, 25, 34))