我正在尝试学习如何在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 ...
答案 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))