我拆分了一个数据框架,并使用ddply函数进行了重组。我应用了fivenum函数,这样我就可以看到每个变量的最小值,第一,中值,第三,最大值。
d <- ddply(sara_data_gathered, "Variable", summarise, fivenum = fivenum(Percent))我现在想知道如何扩展这个数据框架,以便每个值(最小,第一,中位数.)表示为它自己的变量。所以我在找一张六列的桌子。我认为tidyr可能是一个很好的地方看看,但我不认为我有一个标有标签的列。所以首先我要给一个新专栏贴上标签..。
我尝试使用mutate和rep命令,但是从输出中可以看到它不起作用:/
d <- d %>%
mutate(Position = rep(c("Minimum", "First Quartile", "Median", "Third Quartile", "Maximum"), each = 5))
d可变五位芳烃1.0最小值
芳烃19.0最小值
芳烃28.0最小值
芳烃41.0最低
芳烃67.0最小值
沥青素0.0第一四分位数
沥青质1.0第一四分位数
沥青质8.0首四分位数
沥青质30.5第一四分位
沥青质93.0首四分位数
发布于 2020-10-23 07:05:54
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发布于 2020-10-23 07:16:18
另一种选择是简单地使用基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.2https://stackoverflow.com/questions/64495332
复制相似问题