使用dplyr的描述性统计表中的长格式

使用dplyr的描述性统计表中的长格式,r,dplyr,statistics,R,Dplyr,Statistics,我正在尝试使用dplyr获得一个长格式的统计描述表。我确实尝试了收集,但它不工作。。。我的代码示例如下: data(mtcars) table=mtcars %>% summarise_all(funs(mean, sd,median, min, max)) dim(table) [1] 1 55 table[1:4,1:4] > mpg_mean cyl_mean disp_mean hp_mean 1 20.09062 6.1875 230.7

我正在尝试使用dplyr获得一个长格式的统计描述表。我确实尝试了收集,但它不工作。。。我的代码示例如下:

data(mtcars)

table=mtcars %>% 
summarise_all(funs(mean, sd,median, min, max))
dim(table)

[1]  1 55

table[1:4,1:4]

>      mpg_mean cyl_mean disp_mean  hp_mean
1    20.09062   6.1875  230.7219 146.6875
NA         NA       NA        NA       NA
NA.1       NA       NA        NA       NA
NA.2       NA       NA        NA       NA

table2=mtcars %>% 
gather(stat) %>%
summarise_all(funs(mean, sd,median, min, max))
dim(table2)
table2[1:4,1:4]

1: In mean.default(stat) :
  argument is not numeric or logical: returning NA
2: In var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) :
  NAs introduced by coercion
3: In mean.default(sort(x, partial = half + 0L:1L)[half + 0L:1L]) :
  argument is not numeric or logical: returning NA
> [1]  1 10
>      stat_mean value_mean stat_sd value_sd
1           NA   39.60853      NA 84.20792
NA          NA         NA      NA       NA
NA.1        NA         NA      NA       NA
NA.2        NA         NA      NA       NA
在我的脑海中,每一个统计数据都是这样的:

          mean    
mpg    20.09062   
cyl     6.1875    
disp    230.7219  
hp      146.6875  
编辑: 在这里,我添加了一个我的数据帧的真实示例,删除点,并且uuosly我认为下面的解决方案更容易:

ex=数据帧(title_one=c(11,22,34,22,43454),title.two=c(22,44343343424676),title3=c(6,1,0,1,1))


我们可以
收集为“长”格式,
键分为两列,
扩展为“宽”格式

library(tidyverse)
gather(table) %>%
    separate(key, into = c("key1", 'key2')) %>%
    spread(key2, value)

对于具有多个分隔符的更新数据集,我们可以使用
extract
捕获字符

gather(table) %>%
    extract(key, into = c("key1", "key2"), "^(\\w+)[_.](.*)") %>% 
    spread(key2, value)

我们可以
收集为“长”格式,
键分为两列,
扩展为“宽”格式

library(tidyverse)
gather(table) %>%
    separate(key, into = c("key1", 'key2')) %>%
    spread(key2, value)

对于具有多个分隔符的更新数据集,我们可以使用
extract
捕获字符

gather(table) %>%
    extract(key, into = c("key1", "key2"), "^(\\w+)[_.](.*)") %>% 
    spread(key2, value)

谢谢,这个例子做得很好,但遗憾的是,我的真实数据出现了一个错误:错误:每一行输出都必须由唯一的键组合标识。共有35行密钥:@Rodrigo。好的,有错误的问题。最初,我通过添加
gather(table)%%>%separate(key,into=c(“key1”,“key2”))%%>%%>%groupby(key1,key2)%%>%mutate(rn=row_number())%%>%spread(key2,value)
然后意识到,这里不需要它,因为没有重复谢谢,使用很少的变量可以很好地工作,但是对于我的整个数据集,不在列中显示变量名称,在行中显示统计名称…@Rodrigo.您是否在列名中有
\ucode>i..e multiple
\u
使用dataframe:“ex“从更新中,我有错误的列名称,不存在更复杂的模式,但更改列名称删除点和u您的解决方案非常有效!!谢谢,这个例子做得很好,但遗憾的是,我的真实数据出现了一个错误:错误:每一行输出都必须由唯一的键组合标识。共有35行密钥:@Rodrigo。好的,有错误的问题。最初,我通过添加
gather(table)%%>%separate(key,into=c(“key1”,“key2”))%%>%%>%groupby(key1,key2)%%>%mutate(rn=row_number())%%>%spread(key2,value)
然后意识到,这里不需要它,因为没有重复谢谢,使用很少的变量可以很好地工作,但是对于我的整个数据集,不在列中显示变量名称,在行中显示统计名称…@Rodrigo.您是否在列名中有
\ucode>i..e multiple
\u
使用dataframe:“ex“从更新中,我有错误的列名称,不存在更复杂的模式,但更改列名称删除点和u您的解决方案非常有效!!