【发布时间】:2018-07-06 18:41:52
【问题描述】:
我有一个data.frame 的一些实验,其中包含多个因素和每个样本的测量值。例如:
factors <- c("age","sex")
data.frame 看起来像这样:
library(dplyr)
set.seed(1)
df <- do.call(rbind,lapply(1:10,function(i) expand.grid(age=c("Y","O"),sex=c("F","M")) %>% dplyr::mutate(val=rnorm(4))))
grouped.mean.val.df <- df %>% dplyr::group_by_(.dots=factors) %>% dplyr::summarise(mean.val=mean(val))
我想创建一个data.frame,它有一行,列数是因子组合的数量(即本例中的nrow(expand.grid(age=c("Y","O"),sex=c("F","M"))),其中值为meandf$val factors的对应组合。
要获得 mean df$val 对于我所做的每个因素组合:
grouped.mean.val.df <- df %>% dplyr::group_by_(.dots=factors) %>% dplyr::summarise(mean.val=mean(val))
我想要得到的data.frame 是:
res.df <- data.frame(Y.F=grouped.mean.val.df$mean.val[1],
Y.M=grouped.mean.val.df$mean.val[2],
O.F=grouped.mean.val.df$mean.val[3],
O.M=grouped.mean.val.df$mean.val[4])
有没有tidyverse 的方法来获得它?
【问题讨论】:
标签: r dataframe dplyr tidyverse