在 R 中重塑和组合具有相似值的列

Reshaping and combing columns with similar values in R

我在使用 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
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