R - dplyr 总结的转换输出格式
R - transform output format of dplyr summarise
我非常感谢使用 dyplr
中的 summarise
以产生汇总统计数据。
但是,我并不完全相信输出的"format"。
例如:
mt = mtcars %>%
group_by(gear, vs) %>%
summarise(mean (disp) )
会产生
gear vs mean(disp)
1 3 0 357.6167
2 3 1 201.0333
3 4 0 160.0000
4 4 1 115.6200
5 5 0 229.3250
6 5 1 95.1000
对于我的科学报告,我更喜欢这样显示输出(无论这个 mtcars
示例的统计意义如何):
gear Mean Vs = 1 Mean Vs = 0
3 201.0333 357.6167
4 115.6200 160.0000
5 95.1000 229.3250
你知道是否可以 "control" dplyr summarise
的输出格式吗?
我认为 reshape2
包的 dcast
功能对你有用。
library(reshape2)
dcast(mt, gear ~ vs)
Using mean(disp) as value column: use value.var to override.
gear 0 1
1 3 357.6167 201.0333
2 4 160.0000 115.6200
3 5 229.3250 95.1000
您可以使用 tidyr
中的 spread
来扩展您的管道。请注意,我为均值分配了一个名称,因此可以在 spread
调用中简单地引用它。
library(dplyr)
library(tidyr)
mtcars %>%
group_by(gear, vs) %>%
summarise(mean_disp = mean (disp) ) %>%
spread(vs, mean_disp)
Source: local data frame [3 x 3]
gear 0 1
1 3 357.6167 201.0333
2 4 160.0000 115.6200
3 5 229.3250 95.1000
我非常感谢使用 dyplr
中的 summarise
以产生汇总统计数据。
但是,我并不完全相信输出的"format"。
例如:
mt = mtcars %>%
group_by(gear, vs) %>%
summarise(mean (disp) )
会产生
gear vs mean(disp)
1 3 0 357.6167
2 3 1 201.0333
3 4 0 160.0000
4 4 1 115.6200
5 5 0 229.3250
6 5 1 95.1000
对于我的科学报告,我更喜欢这样显示输出(无论这个 mtcars
示例的统计意义如何):
gear Mean Vs = 1 Mean Vs = 0
3 201.0333 357.6167
4 115.6200 160.0000
5 95.1000 229.3250
你知道是否可以 "control" dplyr summarise
的输出格式吗?
我认为 reshape2
包的 dcast
功能对你有用。
library(reshape2)
dcast(mt, gear ~ vs)
Using mean(disp) as value column: use value.var to override.
gear 0 1
1 3 357.6167 201.0333
2 4 160.0000 115.6200
3 5 229.3250 95.1000
您可以使用 tidyr
中的 spread
来扩展您的管道。请注意,我为均值分配了一个名称,因此可以在 spread
调用中简单地引用它。
library(dplyr)
library(tidyr)
mtcars %>%
group_by(gear, vs) %>%
summarise(mean_disp = mean (disp) ) %>%
spread(vs, mean_disp)
Source: local data frame [3 x 3]
gear 0 1
1 3 357.6167 201.0333
2 4 160.0000 115.6200
3 5 229.3250 95.1000