我正在将一份包含多项选择回答的调查结果进行转换。原始数据如下:
df <- data_frame(
id = c("a", "b", "c"),
tired = c(T, F, T),
lonely = c(F, F, T),
excited = c(F, T, T)
)
df
# A tibble: 3 x 4
id tired lonely excited
<chr> <lgl> <lgl> <lgl>
1 a TRUE FALSE FALSE
2 b FALSE FALSE TRUE
3 c TRUE TRUE TRUE
我想创建一个名为“感受”的新列,其中包含被调查者表达的感受的逗号分隔值:
id feelings
<chr> <chr>
1 a tired, excited
2 b excited
3 c tired, lonely, excited
中间步骤是将TRUE值替换为相应列名,以得到:
id tired lonely excited
<chr> <lgl> <lgl> <lgl>
1 a tired excited
2 b excited
3 c tired lonely excited
对于单个列,这很简单。然而,与示例不同,我的数据框中有很多列(10+),通常只有一两个TRUE值,因此我希望自动化处理多个列。一种解决方案可能是循环遍历列并使用基本子集和替换,但是否还有一种优雅的dplyr/tidy方法来处理呢?
感谢您的帮助!