我有一个选举调查数据的数据框架。一个变量列出了选举年份,其他变量报告了个人层面的数据(如选票选择、性别(。
如何将包含选举年份的变量(在本例中为var1(转换为一系列二分变量。我可以用一系列的Recodes来完成这项工作,但我想让pivot_wider在这里工作。
var1<-sample(seq(1,5, 1), size=500, replace=T)
var2<-sample(c("red", "orange"), size=500, replace=T)
var3<-sample(c(0,1), size=500, replace=T)
df<-data.frame(var1, var2, var3)
library(tidyverse)
df
df %>%
pivot_wider(., names_from=var1, values_from=var1)
类似的东西?
library(dplyr)
library(tidyr)
df %>%
pivot_wider(id_cols = var1:var3,
names_from = var1,
values_from = var1,
values_fn = (x) as.integer(length(x) > 0),
values_fill = 0L,
names_sort = T)
var2 var3 `1` `2` `3` `4` `5`
<chr> <dbl> <int> <int> <int> <int> <int>
1 red 1 1 1 1 1 1
2 red 0 1 1 1 1 1
3 orange 1 1 1 1 1 1
4 orange 0 1 1 1 1 1
或求和:
df %>%
pivot_wider(id_cols = var1:var3,
names_from = var1,
values_from = var1,
values_fn = (x) as.integer(sum(x)),
values_fill = 0L,
names_sort = T)
var2 var3 `1` `2` `3` `4` `5`
<chr> <dbl> <int> <int> <int> <int> <int>
1 red 1 27 56 54 84 165
2 red 0 20 50 90 128 115
3 orange 1 17 56 54 72 100
4 orange 0 27 70 78 108 135