有些类型的调查软件会以以下不方便的方式处理" Select 所有适用的"问题.假设有一个问题问"你养的是什么类型的宠物? Select 所有适用的:狗、cat 、雪貂、蛇."生成的数据集如下所示:
pet_tab <- tibble(
owner = 1:5,
pet_1 = c("dog", "cat", "ferret", "dog", "snake"),
pet_2 = c("cat", "ferret", NA, "ferret", NA),
pet_3 = c("ferret", NA, NA, "snake", NA),
pet_4 = c("snake", NA, NA, NA, NA)
)
owner pet_1 pet_2 pet_3 pet_4
1 dog cat ferret snake
2 cat ferret NA NA
3 ferret NA NA NA
4 dog ferret snake NA
5 snake NA NA NA
这是很难处理的.组织这些数据的一种更好的方法是这样的:
owner dog cat ferret snake
1 1 1 1 1
2 0 1 1 0
3 0 0 1 0
4 1 0 1 1
5 0 0 0 1
其中每一列指示主人是否拥有给定类型的动物.如何将第一种类型的数据转换为第二种类型?我知道有很多方法可以做到这一点,但我想要一种优雅、简洁并且最好使用tidyVerse的方法,尽管data.table也可以.