【发布时间】:2017-03-02 22:43:48
【问题描述】:
我正在寻找一种更聪明、希望更快的方法来遍历数据帧的行:
鉴于这样的数据框:
d <- data.frame(x=1:10, y=rep(NA,10))
我希望第 i 行的“y”列是 x 的第 i 个和第 (i-1) 个值的总和:
y[i] = x[i] + x[i-1]
在R中:
for( i in 1:nrow(d)) d$y[i] <- ifelse( i>1, d$x[i] + d$x[i-1], d$x[i])
但是在 R 中循环数据帧从来都不是最好的主意,dply 或 lapply 可以处理这种情况吗?
【问题讨论】:
-
阅读dplyr lead/lag函数。
-
嗯....
d$x + c(NA,d$x[-10])? -
d$x + c(0, d$x[-10]) -
灵活的说法,也可以概念化为线性滤波器
stats::filter(c(0,d$x), c(1,1), sides=1)[-1] -
仅供参考,
lapply正在循环遍历数据框。