【发布时间】:2018-11-05 14:59:14
【问题描述】:
我正在转换调查结果,包括多项选择响应。原始数据如下所示:
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
我想创建一个新列“feelings”,其中包含受访者表达的感受的逗号分隔值:
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 方法可以做到这一点?
感谢您的帮助!
【问题讨论】: