我有一个看起来像这样的数据框:

 x = data.frame(a=c(1,2,3,4), b = c("g1","g2","g3","g4"),
 dummy_1 = c(1,1,1,0), dummy_2 = c(0,0,1,1))

 a  b dummy_1 dummy_2
 1 g1       1       0
 2 g2       1       0
 3 g3       1       1
 4 g4       0       1

我想修改我的数据框,以便在指标变量重叠时添加重复的行。并将我所有的指标变量合并到一列中。即,我希望我的数据框最终看起来像这样
a b  dummy
1 g1 dummmy_1
2 g2 dummmy_1
3 g3 dummmy_1
3 g3 dummmy_2
4 g4 dummmy_2

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

最佳答案

我们将 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

关于r - 将非互斥指标变量与 dplyr 结合使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49453763/

10-12 23:18