r - 将标志列合并为 R 中的单列

标签 r

假设我有这样一个数据框

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

我对如何处理这个问题有点困惑,希望得到任何提示或帮助。

最佳答案

dplyrtidyr 的解决方案。

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/

相关文章:

R沿数据框列表变异

r - 以标签为中心对齐直方图的条形

r - 从数据框列中提取多个数值并存储在单独的列中

r - PostGIS 和 R - 更快、更小地获取数据

python - 如何在 kubernetes 集群内使用脚本语言连接数据库

r - 每个实体的连续值和关联位置 - R

在 R 中删除带括号的列不起作用

r - R 数据集中的 TextInput 过滤器 Shiny

r - 如何在R中的一个区间内计算 'number of values of a particular variable of a tibble'?

r - 使用Apply而不是for(使用数据框的2列)