我有人口统计调查数据,其中变量X
的回答被记录在3个单独的列中。col1
仅包含1,col2
仅包含2,col3
包含其他所有内容。没有重叠的回答,因此当受访者回答"1“时,同一行中的col2
和col3
的单元格为空。我想合并所有3列(有3000+响应,所以手动做这是不可能的)。我应该注意到,这个数据框中有100+列,我还需要在其他变量上使用它。
我尝试了gather()
和apply()
命令,但没有太多成功。
(参考此问题:r collapsing data from multiple columns into one)
apply命令组合了每一列,所以我猜我只需要修改我的参数?我不确定该怎么做(这里有点新手)。
df$New <- apply(df, 1, function(x) paste(x, collapse = ","))
感谢您的帮助/建议!
发布于 2019-05-30 08:40:36
你会用gather() %>% summarise(paste(..., collapse = ", "))
吗?我使用的是你链接到上面的例子。
library(tidyverse)
df <-
tibble(
id = 1:4,
variable_1 = c('Var1', NA, NA,'Var1'),
variable_2 = c('Var2', 'No', NA, NA),
variable_3 = c(NA, NA, 'Var3', NA),
variable_4 = c(NA, 'Var4', NA, NA),
variable_5 = c(NA, 'No', 'Var5', NA),
variable_6 = c(NA, NA, 'Var6', NA)
)
df %>%
# pivot everything besides id
gather(var, response, -id) %>%
# optional
filter(!is.na(response)) %>%
# the method
group_by(id) %>%
summarise(sentence = paste(response, collapse = ", ")) %>%
ungroup()
# id sentence
# 1 Var1, Var2
# 2 No, Var4, No
# 3 Var3, Var5, Var6
# 4 Var1
https://stackoverflow.com/questions/56367805
复制相似问题