按一个变量分组,但对 R 中的所有其他变量(均值)进行汇总()
Posted
技术标签:
【中文标题】按一个变量分组,但对 R 中的所有其他变量(均值)进行汇总()【英文标题】:Group by one variable, but summary() over all other variables (mean) in R 【发布时间】:2019-08-18 04:27:44 【问题描述】:我知道已经有一些关于它的线程,但我还没有找到关于这个特定问题的线程。 我的数据集中的因变量是 Y,我有 144 个自变量。 Y 和 X 只能取值 1 或 0。数据看起来像
Y A469 T593 K022K A835 Z935 U83F W5326 ...
Person1 1 1 1 1 0 0 0 0
Person2 1 0 1 0 1 1 0 0
Person3 0 0 0 1 0 0 1 1
...
summary(dataset)
仅提供所有观察结果的描述性统计数据。我想要的是(伪代码):
summary(all variables if Y == 1 and Y == 0)
如果我能看到某个 X 在 Y 的某个值中出现的频率,那就太好了。例如,如果 Y = 1,mean(X4) = 0.04 和 count = 6。
【问题讨论】:
请提供更完整的数据集以供使用。您可以而且应该使用dput
提供示例数据。
@NelsonGon Bold 在几乎得到答复后断言。我完全支持可重复的示例,当然dput()
更好,但这很清楚。
@Gregor 在我看来,缺乏数据使得很难找到“理想”的解决方案。抱歉!
【参考方案1】:
编辑 2 在 Akrun 和 Gregor 的 cmets 之后,这里是解决方案
data_summary <- dataset %>% group_by(y) %>%
mutate(n = n()) %>%
summarise_all(mean)
如果您希望看到的列数超出屏幕大小,可以尝试,例如,
print(data_summary, width = 20)
View(data_summary)
select(data_summary, <<particular columns you want to see>>)
...
【讨论】:
我收到此错误消息:UseMethod("groups") 中的错误:没有适用于 'groups' 的方法应用于类“c('double', 'numeric')”的对象 能否提供您的数据样本? 我认为count
是问题所在。你可能需要n()
试试n
而不是n()
你说得对,它只显示前 10 个变量。它们都在那里,只是没有打印出来。将结果另存为data_summary
或其他内容,并使用除小标题的默认打印方法以外的其他方式查看它。 print.data.frame(data_summary)
、View(data_summary)
、write.csv(data_summary)
、print(data_summary, width = Inf)
等以上是关于按一个变量分组,但对 R 中的所有其他变量(均值)进行汇总()的主要内容,如果未能解决你的问题,请参考以下文章
当通过R中的不同变量进行分组和汇总时,计算分类变量的出现次数
pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用mean函数计算每个分组中的所有数值变量的聚合平均值
R - 对连续变量标题进行分组,将分类变量因子作为行并聚合为最小值、最大值、平均值