在 R 中构建数据透视表
Building PivotTable in R
这是我的示例数据集:
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 的次数。行应为“1”、“2”和“3”,而列应为 "A"、"B"、"C" 和 "D"。该值将是次数。
我尝试使用 summarise(group_by(kw,Singer.Vote),count=n())
。但它没有指定歌手。
也许这对你有用:
library(tidyverse)
df <- data %>% group_by(Singer, Rank) %>%
summarize(times = n()) %>% spread(Singer, times)
只需使用
t(table(data))
这给出了
Singer
Rank A B C D
1 1 0 0 1
2 0 2 0 0
3 1 0 1 0
使用 janitor 包中的 tabyl
。结果是 data.frame 并且具有 0
而不是 NA
,其中数据中没有出现任何组合。
library(janitor)
data %>%
tabyl(Rank, Singer)
Rank A B C D
1 1 0 0 1
2 0 2 0 0
3 1 0 1 0
这是我的示例数据集:
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 的次数。行应为“1”、“2”和“3”,而列应为 "A"、"B"、"C" 和 "D"。该值将是次数。
我尝试使用 summarise(group_by(kw,Singer.Vote),count=n())
。但它没有指定歌手。
也许这对你有用:
library(tidyverse)
df <- data %>% group_by(Singer, Rank) %>%
summarize(times = n()) %>% spread(Singer, times)
只需使用
t(table(data))
这给出了
Singer
Rank A B C D
1 1 0 0 1
2 0 2 0 0
3 1 0 1 0
使用 janitor 包中的 tabyl
。结果是 data.frame 并且具有 0
而不是 NA
,其中数据中没有出现任何组合。
library(janitor)
data %>%
tabyl(Rank, Singer)
Rank A B C D
1 1 0 0 1
2 0 2 0 0
3 1 0 1 0