r - 创建多个数据名
问题描述
我打算从如下数据创建多个数据框:
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))
}
解决方案
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)
推荐阅读
- apache-flink - 如何拥有一个忽略最近事件的真正滑动窗口?
- azure - Azure SQL“弹性数据库查询”是否允许连接到本地 SQL Server 数据库?
- php - html 表中的我的 Cssed 按钮没有正确设置样式 php
- javascript - 使用javascript的字符串中存在单词
- r - googleway上的R“无法检索结果。没有有效的互联网连接”
- php - 使用覆盖一个 mySQL 表列和该行其余数据的表单
- android - Android - 如何接收快捷方式创建结果
- python - Bash 使用临时文件管道不允许重定向到依赖文件?
- java - 禁用更新的滚动 RecyclerView
- angular - ngFor多个上下文中的Angular 6 ngTemplateOutlet