Я пытаюсь объединить два или более столбцов в автоматическом режиме в некоторых данных опроса. Пример данных:
data <- data.frame("Q1: What is your gender?" = c("Male","Male",NA,NA,"Male"),
"Q1: What is your gender?" = c(NA,NA,"Female","Female",NA),
"Q2: Where do you live?" = c("North","North",NA,NA,NA),
"Q2: Where do you live?" = c(NA,NA,NA,NA,"South"),
"Q2: Where do you live?" = c(NA,NA,NA,"West",NA),
"Q2: Where do you live?" = c(NA,NA,"East",NA,NA))
data[] <- lapply(data, as.character)
И это то, чего я хочу достичь:
data.wanted <- data.frame("Q1: What is your gender?" = c("Male","Male","Female","Female","Male"),
"Q2: Where do you live?" = c("North","North","East","West","East"))
data.wanted[] <- lapply(data.wanted, as.character)
У каждого респондента есть только один не NA
ответ на вопрос. Я рассмотрел (среди прочего) Объединение двух столбцов в один в R , но не могу понять, как использовать coalesce
во многих вопросах, которые могут представлять различное количество столбцов. Я мог бы сделать для каждого вопроса:
data["Q1"] <- coalesce(data[,1],data[,2])
data["Q2"] <- coalesce(data[,3],data[,4],data[,5],data[,6])
то есть ручным способом. Тем не менее, поскольку у меня много вопросов, каждый из которых соответствует описанной выше структуре, я действительно ищу автоматический способ сделать это, либо через цикл, где я обращаюсь к именам столбцов через grep
, либо каким-либо альтернативным методом.
Любые предложения очень ценятся!