我想计算数据帧中许多列的一阶差,而无需明确命名它们。此代码适用于一列:
set.seed(1)
Data <- data.frame(
X = sample(1:10),
Y = sample(1:10),
Z = sample(1:10))
Newdata <- as.data.frame(diff(Data$X, lag = 1))
如何为数据帧中的许多列(例如[2:200])计算相同的值?
答案 0 :(得分:2)
我认为这可以满足您的要求
as.data.frame(lapply(Data, diff, lag=1))
## X Y Z
## 1 1 -1 -8
## 2 1 4 4
## 3 2 4 -5
## 4 -5 -5 8
## 5 6 2 -1
## 6 1 1 -1
## 7 -3 -4 -2
## 8 4 -3 -2
## 9 -9 8 1
由于数据帧是内部列表,因此我们可以lapply
遍历这些列。您可以使用Data[1:2]
而不是Data
来进行前两列或任何有效的列索引。