Есть много сообщений о создании фиктивных переменных, но в моем случае у меня есть набор столбцов, похожих на фиктивные переменные, которые необходимо перекодировать обратно в один столбец.
Задано как набор категориальных / строковых переменных (округов) в США):
a<-c(NA,NA,"Cameron","Luzerne");b<-c(NA,"Luzerne",NA,NA);c<-c("Chester",NA,NA,NA)
df<-as.data.frame(cbind(a,b,c))
Как создать функцию, которая сможет конвертировать их в одну категорию? Функция должна работать для любого непрерывного набора строковых столбцов.
Результат должен выглядеть следующим образом:
newcol a b c
Chester <NA> <NA> Chester
Luzerne <NA> Luzerne <NA>
Cameron Cameron <NA> <NA>
Luzerne <NA> Luzerne <NA>
Я написал эту функцию, которая принимает три аргумента:
cn<-function(df,s,f){
for(i in seq_along(df[ ,c(s:f)]) ) # for specified columns in a dataframe...
ifelse(is.na(df[,i]),NA,df[ ,i] ) # return value if not NA
}
Но это не работает. Я пробовал множество подобных попыток. Сбой.
Идея состоит в том, чтобы взять фрейм данных с некоторым количеством строковых столбцов и переместить их значения, если не пустые, в новый столбец.