Как изменить метки факторов в строку в кадре данных

У меня есть следующий фрейм данных:

    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)