我想对嵌套数据帧(存储为列表列)执行计算,并使用purrr函数将计算的变量添加回每个数据帧.我将使用此结果加入其他数据,并保持紧凑,这有助于我更好地组织和检查它.我可以通过几个步骤完成此操作,但似乎可能有一个我没有遇到的解决方案.如果有解决方案,我无法轻易找到它.
加载库.示例需要以下软件包(在CRAN上可用):
library(dplyr)
library(purrr)
library(RcppRoll) # to calculate rolling mean
Run Code Online (Sandbox Code Playgroud)
具有3个主题的示例数据,以及随时间的重复测量:
test <- data_frame(
id= rep(1:3, each=20),
time = rep(1:20, 3),
var1 = rnorm(60, mean=10, sd=3),
var2 = rnorm(60, mean=95, sd=5)
)
Run Code Online (Sandbox Code Playgroud)
将数据存储为嵌套数据框:
t_nest <- test %>% nest(-id)
id data
<int> <list>
1 1 <tibble [20 x 3]>
2 2 <tibble [20 x 3]>
3 3 <tibble [20 x 3]>
Run Code Online (Sandbox Code Playgroud)
执行计算.我将根据数据计算多个新变量,尽管稍后可以扩展一个解决方案.每次计算的结果都是一个数字向量,长度与输入相同(n = 20):
t1 <- t_nest %>%
mutate(var1_rollmean4 = map(data, ~RcppRoll::roll_mean(.$var1, n=4, align="right", fill=NA)),
var2_delta4 …Run Code Online (Sandbox Code Playgroud)