我有一个由5个虚拟变量组成的数据集,看起来像这样......
> head(type)
convertible coupe hatchback sedan wagon
1 0 0 0 1 0
2 0 1 0 0 0
3 1 0 0 0 0
4 1 0 0 0 0
5 1 0 0 0 0
6 1 0 0 0 0
如果我要使用dplyr代码,如何创建一个名为“TypeOfCar”的新变量,其中所有虚拟变量都会折叠到其中?谢谢!
编辑:抱歉模棱两可。使用上面的信息,我想知道在dplyr中是否有办法收集当前的虚拟变量集来制作一个名为TypeOfCar的变量。以下示例(分别对应于ID 1-6以上)
TypeOfCar
1 sedan
2 coupe
3 convertible
4 convertible
5 convertible
6 convertible
答案 0 :(得分:2)
我们可以使用base R
data.frame(TypeOfCar = names(type)[as.matrix(type)%*%seq_along(type)],
stringsAsFactors=FALSE)
# TypeOfCar
#1 sedan
#2 coupe
#3 convertible
#4 convertible
#5 convertible
#6 convertible
答案 1 :(得分:2)
这可以使用&#tidyverse'图书馆 - 特定的' tidyr'和' dplyr'。以下代码生成您之后的输出。
library(tidyverse)
type %>% gather(TypeOfCar, Count) %>% filter(Count >= 1) %>% select(TypeOfCar)
输出:
TypeOfCar
<chr>
1 convertible
2 convertible
3 convertible
4 convertible
5 coupe
6 sedan
希望这可以解决您的问题,如果需要更改,请告诉我!感谢。