在R中构建数据透视表

时间:2017-03-14 16:11:36

标签: r pivot-table data-manipulation

以下是我的示例数据集:

library(dplyr)
Singer <- c("A","B","C","A","B","D")
Rank <- c(1,2,3,3,2,1)
data <- data_frame(Singer,Rank)

我想构建一个数据透视表,以显示每位歌手排名1,2,3的次数。该行将是&#34; 1&#34;,&#34; 2&#34;和#34; 3&#34;,而列应为&#34; A&#34;,&#34; B&#34;,&#34; C&#34;和&#34; D&#34 ;。该值将是计数次数。

我尝试使用summarise(group_by(kw,Singer.Vote),count=n())。但它没有指明这位歌手。

3 个答案:

答案 0 :(得分:0)

也许这适合你:

library(tidyverse)

df <- data %>% group_by(Singer, Rank) %>%
      summarize(times = n()) %>% spread(Singer, times)

答案 1 :(得分:0)

只需使用

t(table(data))

给出了

    Singer
Rank A B C D
   1 1 0 0 1
   2 0 2 0 0
   3 1 0 1 0

答案 2 :(得分:0)

使用janitor包中的crosstab。结果是data.frame并且0代替NA,其中数据中没有组合。

library(janitor)

data %>%
  crosstab(Rank, Singer)

#>   Rank A B C D
#> 1    1 1 0 0 1
#> 2    2 0 2 0 0
#> 3    3 1 0 1 0