以下是我的示例数据集:
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())
。但它没有指明这位歌手。
答案 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