Как изменить метки факторов в строку в кадре данных
У меня есть следующий фрейм данных:
name1 name2
A B
B D
C C
D A
столбцы "name1" и "name2" рассматриваются как факторы, и поэтому A, B, C и D рассматриваются как уровни. Однако я хочу каким-то образом преобразовать этот фрейм данных, чтобы он стал
name1 name2
"A" "B"
"B" "D"
"C" "C"
"D" "A"
Другими словами, преобразуйте его так, чтобы A, B, C и D рассматривались как строка.
как я могу это сделать?
Ответы
Ответ 1
вы ищете as.character
, который необходимо применить к каждому столбцу data.frame
Предполагая, что X
- ваш data.frame
Если fctr.cols
- имена столбцов фактора, вы можете использовать:
X[, fctr.cols] <- sapply(X[, fctr.cols], as.character)
Вы можете собирать столбцы факторов с помощью is.factor
:
fctr.cols <- sapply(X, is.factor)
Ответ 2
Это может быть немного проще, чем ответ выше.
#where your dataframe = df
df.name1 <- as.character (df.name1)
df.name2 <- as.character (df.name2)
Мне нужно делать такие вещи все время на работе, потому что данные настолько грязные. Я смог сделать это при импорте с помощью StringsAsFactors = FALSE, но в самой новой версии r я получаю сообщение об ошибке read.csv. В идеале я скоро это выясню... В то же время я делаю это как быстрый и эффективный метод.
Он принимает старую переменную foo, которая является типом фактора, и преобразует ее в новую переменную fooChar, которая является типом символа. Обычно я делаю это на месте, называя новую переменную такой же, как и старую, но вы можете играть с ней, прежде чем доверять ей, чтобы заменить значения.
#Convert from Factor to Char
#Data frame named data
#Old Variable named foo, factor type
#New Variable named fooChar, character type
data$fooChar <-as.character(data$foo)
#confirm the data looks the same:
table (data$fooChar)
#confirm structure of new variable
str(data)