如何解决R传播ddply Fivenum结果
我拆分了一个数据帧,并使用ddply函数进行了重组。我应用了Fivenum函数,以便可以看到每个变量的最小值,第一,中位数,第三,最大值。
d <- ddply(sara_data_gathered,"Variable",summarise,fivenum = fivenum(Percent))
我现在想知道如何扩展此数据帧,以便将每个值(最小值,第一位数,中位数...)显示为自己的变量。所以我正在寻找一个包含六列的表格。我认为提迪尔可能是个不错的地方,但我认为我没有为此而贴标签的专栏。所以首先我要标记一个新列...
我尝试使用mutate和rep命令,但从输出中可以看到它不起作用:/
d <- d %>%
mutate(Position = rep(c("Minimum","First Quartile","Median","Third Quartile","Maximum"),each = 5))
d
可变的Fivenum位置
Aromatics 1.0 Minimum
芳香族19.0最低
芳香族28.0最低
芳香族41.0最低
芳香族最低67.0
沥青质0.0第一四分位数
沥青质1.0第一四分位数
沥青质8.0第一四分位数
沥青质30.5第一四分位数
沥青质93.0第一四分位
解决方法
plyr
已退休,您可以使用dplyr
,如果您使用的是1.0.0,则可以在summarise
中返回多行。然后,我们可以使用pivot_wider
获取宽格式的数据。
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarise(fivenum = fivenum(mpg),Position = c("Minimum","First Quartile","Median","Third Quartile","Maximum")) %>%
tidyr::pivot_wider(names_from = Position,values_from = fivenum)
# cyl Minimum `First Quartile` Median `Third Quartile` Maximum
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 4 21.4 22.8 26 30.4 33.9
#2 6 17.8 18.6 19.7 21 21.4
#3 8 10.4 14.3 15.2 16.4 19.2
,
一种替代方法是仅使用基数R中的tapply
函数:
do.call(rbind,tapply(mtcars$mpg,mtcars$cyl,summary))
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 4 21.4 22.80 26.0 26.66364 30.40 33.9
# 6 17.8 18.65 19.7 19.74286 21.00 21.4
# 8 10.4 14.40 15.2 15.10000 16.25 19.2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。