我无法使用dplyr来解决这个问题
当前我的数据如下
A1 A2 A3 B1
Option1 Option2 Option3 var1
Option2 Option3 Option1 var2
Option1 Option2 Option3 var1
Option2 Option3 Option1 var2
我希望它看起来像这样
Option1 Option2 Option3 B1
2 2 2 var1
2 2 2 var2
所以我可以生成此交叉表
B1
var1 var2
Option1 2 2
Option2 2 2
Option3 2 2
答案 0 :(得分:1)
df = read.table(text = "
A1 A2 A3 B1
Option1 Option2 Option3 var1
Option2 Option3 Option1 var2
Option1 Option2 Option3 var1
Option2 Option3 Option1 var2
", header=T, stringsAsFactors=F)
library(tidyverse)
df %>%
gather(var,Option,-B1) %>% # reshape dataset
count(B1,Option) %>% # count combinations
spread(B1, n) # reshape again
# # A tibble: 3 x 3
# Option var1 var2
# <chr> <int> <int>
# 1 Option1 2 2
# 2 Option2 2 2
# 3 Option3 2 2
如果您喜欢您提到的其他格式:
df %>%
gather(var,Option,-B1) %>% # reshape dataset
count(B1,Option) %>% # count combinations
spread(Option, n) # reshape dataset
# # A tibble: 2 x 4
# B1 Option1 Option2 Option3
# <chr> <int> <int> <int>
# 1 var1 2 2 2
# 2 var2 2 2 2