【问题标题】:Output of the dplyr summarize() fundtiondplyr summarise() 函数的输出
【发布时间】:2018-04-30 08:49:46
【问题描述】:

有没有一种方便的方法可以让 dplyr::summarize_all() 以更易读的格式输出结果,而无需事后手动重新排列?

最终,我希望能够更轻松地将汇总的输出移植到 Word 等中的表格中。

我想避免像下面这样的工作。

谢谢

例子:

library(dplyr)
library(e1071) # for skewness() function
# make fake data
a <- rnorm(20)
b <- rnorm(20)
c <- rnorm(20)
x <- rnorm(20)
y <- rnorm(20)
z <- rnorm(20)

# create dataframe
dat = data.frame(a, b, c, x, y, z)

# run summarize()
descriptives <- dat %>% summarize_all(funs(mean, sd, skewness))
descriptives

# rearrange descriptives
matrix(descriptives, 6, 3, 
    dimnames = list(c("a", "b", "c", "x", "y", "z"), 
    c("mean", "SD", "skew")), byrow = FALSE)

# RETURNS
#  mean       SD        skew       
#a 0.1533271  0.8106499 -0.02879986
#b -0.5117311 0.5608904 -0.2668225 
#c 0.1267941  0.8214882 -0.4260682 
#x 0.05337055 0.9817041 -0.1932566 
#y -0.1091145 0.9050062 -0.3409686 
#z -0.3195788 0.8833493 -0.6663437 

【问题讨论】:

  • 您应该能够使用 tidyr 包自动执行重新安排过程。

标签: r matrix dplyr output summarize


【解决方案1】:

您需要以整齐的格式重新排列数据,请阅读 https://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.html 我做了一个快速融化,使用 reshape2 包。您可以使用tidyr 执行此操作,等效函数为gather()。这是一个方便的参考 -http://tidyr.tidyverse.org/ 我的大脑还是太习惯reshape2,慢慢训练自己使用tidyr

library(reshape2)
library(dplyr)
library(e1071)
descriptives <-melt(dat) %>%
group_by(variable) %>%
summarize_all(funs(mean, sd, skewness))

【讨论】:

  • 感谢您的帮助。如果可以的话,我会接受这两个,并且也都赞成,但我没有这样做的“声誉”。
【解决方案2】:
library(tidyr)
library(dplyr)
library(e1071) # for skewness() function
# make fake data
a <- rnorm(20)
b <- rnorm(20)
c <- rnorm(20)
x <- rnorm(20)
y <- rnorm(20)
z <- rnorm(20)

# create dataframe
dat = data.frame(a, b, c, x, y, z)

# run process 
dat %>% 
  summarize_all(funs(mean, sd, skewness)) %>%
  gather() %>%
  separate(key, c("var","type")) %>%
  spread(type, value)

#   var          mean        sd   skewness
# 1   a  0.0182792019 0.9098886 -0.3851676
# 2   b  0.0003444183 0.9815170  0.6032848
# 3   c -0.2724927337 0.9557808 -0.1961959
# 4   x -0.2679435647 0.6557561 -1.0111428
# 5   y -0.1951287997 0.8190830  0.5120989
# 6   z -0.0395147539 1.2758244  0.0464844

【讨论】:

  • 感谢您的帮助,如果可以的话,我会投赞成票,但我没有这样做的声誉。
猜你喜欢
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多