【发布时间】:2016-07-05 11:22:32
【问题描述】:
我正在努力解决 R 中的多个响应问题。我希望找到一种简单的方法来使用 dplyr 和 tidyr 解决这个问题。下面是一个示例多响应数据帧。我正在尝试做一些事情,首先,创建百分比 - 猫的百分比,狗的百分比等。百分比将是整体反应。我通常计算百分比 -
group_by(_)%>%summarise(count=n())%>%mutate(percent=count/sum(count))
在这种情况下似乎没有削减它。也许我必须使用 summarise_each 或更专业的功能?我对 r 还是很陌生,对 Dplyr 和 Tidyr 还是很陌生。我还尝试使用 Tidyr 的“联合”功能,该功能有效,但它包括 NA,我将不得不重新编码。但我似乎仍然无法计算联合列的百分比。
任何建议都会很棒!首先,如何使用“联合”将多个响应列合并为所有可能的组合,然后计算每个组合的百分比,以及如何简单地计算每个二元列的百分比作为整体响应的比例?希望这是有道理的!我敢肯定,我忽略了一个简单而优雅的答案。
Cats<-c(Cat,NA,Cat,NA,NA,NA,Cat,NA)
Dogs<-c(NA,NA,Dog,Dog,NA,Dog,NA,Dog)
Fish<-c(NA,NA,Fish,NA,NA,NA,Fish,Fish)
Pets<-data.frame(Cats,Dogs,Fish)
Pets<-Pets%>%unite(Combined,Cats,Dogs,Fish,sep=",",remove=FALSE)
Animals%>%group_by(Combined)%>%summarise(count=n())%>%mutate(percent=count/sum(count))
【问题讨论】:
-
请分享可以读入 R 的预期输出和数据。
-
感谢您的评论。我对这个网站还比较陌生,你所说的分享预期输出是什么意思?
-
在您在帖子中描述的所需转换后数据会是什么样子。
-
阅读this