如何在R

时间:2015-07-20 18:13:33

标签: r dataframe batch-processing

我有7个实验数据帧,每个实验细分为15次重复(或迭代)。我现在对所有 105 变量x感兴趣,以便稍后在分析中进行计算。

想象一下,您拥有以下带有随机数字的数据框,并且为了简单起见,假装所有数据框都包含不同的数字:

set.seed(2)

a <- runif(100, -1.5, 1.5)
b <- pnorm(rnorm(100))
c <- rnorm(100)
d <- rnorm(100)
e <- dnorm(rnorm(100))
iteration <- sort(sample(1:7, 100, replace=T), decreasing=F)
x <- f <- sample(1:1000, 100, replace=T)

df1 <- data.frame(a,b,c,d,e,iteration,x)
df2 <- data.frame(a,b,c,d,e,iteration,x)
df3 <- data.frame(a,b,c,d,e,iteration,x)
df4 <- data.frame(a,b,c,d,e,iteration,x)
df5 <- data.frame(a,b,c,d,e,iteration,x)
df6 <- data.frame(a,b,c,d,e,iteration,x)
df7 <- data.frame(a,b,c,d,e,iteration,x)

如何分解所有105个变量x组合(df1$x of iteration 1df1$x of iteration 2,...,df7$x of iteration 7),以便我可以计算以下示例无意义方程所有105变量组合?

mean(df1$x of iteration 1) - sd(df1$x of iteration 1)
mean(df1$x of iteration 2) - sd(df1$x of iteration 2)
...
mean(df7$x of iteration 7) - sd(df7$x of iteration 7)

我有以下命令以便&#34;提取&#34;变量df1$x of iteration 1但这将涉及剩余变量的208行:

df_1 <- df1[which(df1$iteration=='1'),]
df_1_final <- df_1[grepl("1", df_1$iteration), c(6, 7)]

这有意义吗?在 Gnu R 中没有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

使用dplyr的可能性。可能更容易使用列表中的data.frames(来自@akrun的评论)

library(dplyr)

bind_rows(mget(paste0('df', 1:7))) %>%  # put your data.frames in a list -> data.frame
  mutate(group=rep(1:7, each=100)) %>%  # add a grouping column
  group_by(group, iteration) %>%        # group
  summarise(mean(x) - sd(x))            # do your stuff

data.table

rbindlist(mget(paste0('df', 1:7)))[,mean(x)-sd(x) ,.(gr=rep(1:7,each=100),iteration)]

答案 1 :(得分:1)

你可以创建一个无意义的方程函数,然后在(2^32)-1中使用它,4294967295作为INDEX参数,用于每个df。所以对于df1:tapply(),它将返回一个列表/数组,其中包含df1的每个组(迭代)的所有计算。