如何将因子标签更改为数据框中的字符串

时间:2013-10-06 02:16:41

标签: r

我有以下数据框:

    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视为字符串进行转换。

我该怎么做?

3 个答案:

答案 0 :(得分:18)

您正在寻找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)

答案 1 :(得分:1)

这可能比上面的答案简单一点。

#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)

答案 2 :(得分:0)

如果只想转换因子变量的选定列而不是数据框中的所有因子变量列,可以使用:

file1[,n] <- sapply(file1[,n], as.character)

其中n是列号。