在R中更快地创建差异列
假设我在R中创建了以下数据帧在R中更快地创建差异列,r,dataframe,R,Dataframe,假设我在R中创建了以下数据帧 c1 <- sample(10) c2 <- sample(10) c3 <- sample(10) df1 <- data.frame(c1, c2, c3) c1我们循环遍历列,用shift得到lag,然后从原始值中减去它。我们将“data.frame”转换为“data.table”(setDT(df1)) 或者使用dplyr library(dplyr) df1 %>% mutate_each(funs(. - lag
c1 <- sample(10)
c2 <- sample(10)
c3 <- sample(10)
df1 <- data.frame(c1, c2, c3)
c1我们循环遍历列,用shift
得到lag
,然后从原始值中减去它。我们将“data.frame”转换为“data.table”(setDT(df1)
)
或者使用dplyr
library(dplyr)
df1 %>%
mutate_each(funs(. - lag(.))) %>%
na.omit()
或者选择base R
tail(df1,-1) - head(df1,-1)
sapply(df1, diff)
或者另一种选择是
tail(df1,-1) - head(df1,-1)
sapply(df1, diff)
但是,diff
比直接减法或使用shift
(因为OP的帖子涉及性能)您可以对所有列使用diff
和应用它
apply(df1, 2, diff)
只需df1[-1,]-df1[-nrow(df1),]