【发布时间】:2019-03-17 13:23:39
【问题描述】:
我有一个类似于下面的数据框。
(在我的原始数据框中,除了 gs 和 us 之外,我还有 ps 和 qs + 它们的置信区间)。
df <- read.table(text="
university gs gs.ci.l gs.ci.u us us.ci.l us.ci.u
1 A 0.90 0.89 0.92 0.08 0.079 0.081
2 B 0.80 0.78 0.82 0.18 0.179 0.181
3 C 0.70 0.69 0.71 0.27 0.269 0.271
4 D 0.60 0.64 0.63 0.30 0.291 0.34", header=T)
[Q1] 我想用 dplyr 重新排列我的数据框以创建分面条形图(每个大学一个方面,每个方面显示 2 个条形(gs + 置信区间 [gs.ci.l; gs.ci.u] 和 us + 置信区间 [ us.ci.l; us.ci.u])
为了生成上述输出,重新排列数据框的最佳方法是什么? 我尝试使用 collect ( ) 将均值和置信限分别强制到相同的列中。
[Q2] 相关地,是否有一种优雅的方法可以立即在列中排列 dplyr::summarise( ) %>% select( ) 的输出?在我的示例中,我希望将“gs”和“us”排列在“ci_low”和“gs. ci.u”和“gs.ci.u”提前放在一个名为“ci_up”的列中。
【问题讨论】:
-
更好地直观地显示预期的输出。使其更快地跟随(在我看来)。
-
看起来有点像这样:strengejacke.files.wordpress.com/2013/03/groupbars-5.png。每种颜色代表一所大学,但每种颜色(gs,us)只有两个条形图,每个条形图显示 CI。我希望这会有所帮助。
-
我建议使用
tidyr::gather转换为长格式,然后使用mutate创建一个变量,告诉每列是否与gs 或我们相关,另一个告诉该列是否是基值或 ci.l 或 ci.u 值。然后你可以将它们直接输入 ggplot。 -
@Jon Spring。那么在实践中你会怎么做呢?