假设我有这样一个数据框
testtbl <- data.frame(ID = c('1','2','3','4'),
A = c(1,0,1,1),
B = c(1,1,1,1),
C = c(0,0,0,1),
D = c(0,1,1,1))
> testtbl
ID A B C D
1 1 1 1 0 0
2 2 0 1 0 1
3 3 1 1 0 1
4 4 1 1 1 1
A
-D
列是可以为 1 或 0 的标志。我想将这些列合并为 1 列,新数据框看起来像喜欢:
> testtbl
ID flag
1 1 A,B
2 2 B,D
3 3 A,B,D
4 4 A,B,C,D
我对如何处理这个问题有点困惑,希望得到任何提示或帮助。
最佳答案
dplyr
和 tidyr
的解决方案。
library(dplyr)
library(tidyr)
testtbl2 <- testtbl %>%
gather(Col, Val, -ID) %>%
filter(Val == 1) %>%
select(-Val) %>%
group_by(ID) %>%
summarise(flag = toString(Col))
testtbl2
# # A tibble: 4 x 2
# ID flag
# <fctr> <chr>
# 1 1 A, B
# 2 2 B, D
# 3 3 A, B, D
# 4 4 A, B, C, D
关于r - 将标志列合并为 R 中的单列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47166679/