首页 > 解决方案 > 创建多个数据名

问题描述

我打算从如下数据创建多个数据框:

ID Time Ethnicity LDL  HDL ....
1   1   black
2   2   white
3   1   black
4   2   White

每个数据框是数据中显示的 4 行中LDL, , ...列的平均值。HDL我使用了以下代码,但问题是所有数据帧都是相同的。我的意思DF[[1]]是与DF[[2]]...相同DF[[15]]。如果您能帮助我找到解决方案,我将不胜感激。

dv=c(names(data[,4:15]))

library(ggplot2)
require(plyr)

for (i in 1:12) {
    DF[[i]] = ddply(data, c("Time", "Ethnicity"), summarize, 
    Mean = mean(data[[paste(dv[i])]], na.rm = T))
}

标签: rloops

解决方案


plyr退休,可以使用dplyr。当你这样做时mean(data[[paste(dv[i])]],你正在对整个列进行子集化而不是尊重组。因此,对于等中的所有值DF[[1]],您得到相同的平均值。DF[[2]]

library(dplyr)

output_df <- data %>% 
               group_by(Time, Ethnicity) %>% 
               summarise_at(4:15, mean, na.rm = TRUE) %>% 
               ungroup

如果您想要数据框列表,您可以使用group_split

DF <- output_df %>% group_split(Time, Ethnicity)

推荐阅读