摘要表按多个变量分组,按列而不是按行分组

时间:2020-11-06 16:59:37

标签: r dplyr pivot summarize

很抱歉,对此有一个简单的解决方法(尽管希望可以解决),但是谷歌搜索和阅读文档似乎没有提供答案。

如果我总结分成多个组的变量,R会在行上全部输出分组。但是,最好将其中之一移到一列。

例如,采用以下代码

state <- c("AL","AL","AL","AL","AL","CA","CA","CA","CA","CA","CA")
week <- c(1,1,2,2,2,1,1,2,2,2,2)
amount <- c(3,2,4,1,3,3,2,5,1,1,2)
df <- data.frame(state,week,amount)

sumTable <- df %>% group_by(week,state) %>% summarize(amountMean = mean(amount))
                                                              
print(sumTable)       

此输出

 week state amountMean
  <dbl> <chr>      <dbl>
1     1 AL          2.5 
2     1 CA          2.5 
3     2 AL          2.67
4     2 CA          2.25

但是,最好将一组分组放在列中,将一组分组到行中,这样看起来就像:

+------+-------------+
|      | Amount      |
+------+------+------+
| Week | AL   | CA   |
+------+------+------+
| 1    | 2.5  | 2.5  |
+------+------+------+
| 2    | 2.67 | 2.25 |
+------+------+------+

(我不在乎格式和内容-只是它出现在该结构中)。

有没有办法像这样按列对输出进行分组?

2 个答案:

答案 0 :(得分:0)

您正在描述一个枢轴。您可以为此使用tidyr::pivot_wider

tidyr::pivot_wider(sumTable, names_from = state, values_from = amountMean)
#> # A tibble: 2 x 3
#> # Groups:   week [2]
#>    week    AL    CA
#>   <dbl> <dbl> <dbl>
#> 1     1  2.5   2.5 
#> 2     2  2.67  2.25

答案 1 :(得分:0)

我们可以使用A B 中的A\n B

xtabs
相关问题