将非互斥指标变量与dplyr相结合

时间:2018-03-23 15:56:23

标签: r dplyr

我有一个如下所示的数据框:

a b  dummy 
1 g1 dummmy_1       
2 g2 dummmy_1       
3 g3 dummmy_1  
3 g3 dummmy_2       
4 g4 dummmy_2       

我想修改我的数据框,以便在指标变量重叠时添加重复的行。并将我的所有指标变量合并为一列。即,我希望我的数据框最终看起来像这样

unite()

复制行然后以这种方式组合我的指标变量的最佳方法是什么?我已尝试使用{{1}},但在制定复制数据框中行的条件时遇到了一些麻烦。

2 个答案:

答案 0 :(得分:3)

我们gather为'long'格式,然后filter出'val'中的元素为零,select为相关列

library(tidyerse)
gather(x, dummy, val, dummy_1:dummy_2) %>% 
       filter(val!=0) %>%
       select(-val)
# a  b   dummy
#1 1 g1 dummy_1
#2 2 g2 dummy_1
#3 3 g3 dummy_1
#4 3 g3 dummy_2
#5 4 g4 dummy_2

答案 1 :(得分:1)

您也可以尝试:

df <- reshape2::melt(x, id.vars = c("a","b"))

df[df$value == 1, c("a","b","variable")]
#  a  b variable
#1 1 g1  dummy_1
#2 2 g2  dummy_1
#3 3 g3  dummy_1
#7 3 g3  dummy_2
#8 4 g4  dummy_2