如何重命名因子的级别?

时间:2017-05-22 12:25:03

标签: r r-factor

我有5个数据帧,包含三种不同语言的多个变量(110),我很擅长使用R.我正在将这些因素重新编码为最终可以合并所有数据帧的数字。除了下面的句子外,大多数因素都很简单。我怀疑“ESG Art.383 and Art.384”中的圆点令人困惑,但我无法摆脱它

data$B1aC <- as.factor(data$B1aC)
levels(data$B1aC)
summary(data$B1aC)
data$B1aC <- factor(data$B1aC, levels = c("Einsatz auf Wunsch des 
Bewohners/der Bewohnerin oder im Einverständnis mit dem/der dazu 
urteilsfähigen Bewohner/-in","Einsatz bei dazu nicht urteilsfähiger Bewohner/-in, alle Bedingungen (ESG Art. 383 und Art. 384) sind erfüllt","Kontext ist noch nicht geklärt, nicht alle Bedingungen (ESG Art. 383 und Art. 384) sind erfüllt"),labels = c("1", "2", "3"))
table(data$B1aC)

当我显示转换的数据时,我丢失了数字2和3(两者都有一个点在他们的水平)。有谁知道我能做什么?

我在Apple(x86_64-apple-darwin13.4.0)上使用Rstudio并运行R 3.3.3。

这是 table()

的输出
table(data$B1aC)

Einsatz auf Wunsch des Bewohners/der Bewohnerin oder im Einverständnis mit dem/der dazu urteilsfähigen Bewohner/-in 
                                                                                                                  1 
      Einsatz bei dazu nicht urteilsfähiger Bewohner/-in, alle Bedingungen (ESG Art. 383 und Art. 384) sind erfüllt 
                                                                                                                  1 
                    Kontext ist noch nicht geklärt, nicht alle Bedingungen (ESG Art. 383 und Art. 384) sind erfüllt 
                                                                                                                  1 

summary(data$B1aC)
Einsatz auf Wunsch des Bewohners/der Bewohnerin oder im Einverständnis mit dem/der dazu urteilsfähigen Bewohner/-in 
                                                                                                                  1 
      Einsatz bei dazu nicht urteilsfähiger Bewohner/-in, alle Bedingungen (ESG Art. 383 und Art. 384) sind erfüllt 
                                                                                                                  1 
                    Kontext ist noch nicht geklärt, nicht alle Bedingungen (ESG Art. 383 und Art. 384) sind erfüllt 
                                                                                                                  1 
                                                                                                               NA's 
                                                                                                                 97 

我必须将字符串转换为数字,因为数据框有3种不同的语言 - 然后合并会让我感到困惑,因为我对所有语言都不太熟悉。

转换数据后

data$B1aC <- factor(data$B1aC, levels = c("Einsatz auf Wunsch des Bewohners/der Bewohnerin oder im Einverständnis mit dem/der dazu urteilsfähigen Bewohner/-in",
                                                    "Einsatz bei dazu nicht urteilsfähiger Bewohner/-in, alle Bedingungen (ESG Art. 383 und Art. 384) sind erfüllt",
                                                    "Kontext ist noch nicht geklärt, nicht alle Bedingungen (ESG Art. 383 und Art. 384) sind erfüllt"),
                         labels = c("1", "2", "3"))
table(data$B1aC)

1 2 3 
1 0 0 

2 个答案:

答案 0 :(得分:1)

鉴于您的text,您可以按照以下方式删除标点符号:

  text<-c("Einsatz auf Wunsch des Bewohners/der Bewohnerin oder im Einverständnis mit dem/der dazu urteilsfähigen Bewohner/-in","Einsatz bei dazu nicht urteilsfähiger Bewohner/-in, alle Bedingungen (ESG Art. 383 und Art. 384) sind erfüllt","Kontext ist noch nicht geklärt, nicht alle Bedingungen (ESG Art. 383 und Art. 384) sind erfüllt")

  text<-gsub(pattern = "[[:punct:]]"," ",text,perl=T)

因此屈服:

> text

[1] "Einsatz auf Wunsch des Bewohners der Bewohnerin oder im Einverständnis mit dem der dazu urteilsfähigen Bewohner  in"
[2] "Einsatz bei dazu nicht urteilsfähiger Bewohner  in  alle Bedingungen  ESG Art  383 und Art  384  sind erfüllt"      
[3] "Kontext ist noch nicht geklärt  nicht alle Bedingungen   ESG Art  383 und Art  384   sind erfüllt"

答案 1 :(得分:0)

看起来您正在尝试重新标记您的因素,以便每个级别都有一个数字标签,而不是现有的文本标签。

从整数和as.numeric继承的因子为您提供了数字表示:

data(warpbreaks)
table(warpbreaks$wool)
# 
#  A  B 
# 27 27 
table(as.numeric(warpbreaks$wool))
# 
#  1  2 
# 27 27 

此时,如果你真的想要,你可以在数字上重新标记因子(下图),但是从你提到需要通过这个变量合并数据帧时,我想不出为什么这是可取的。

warpbreaks$wool <- factor(warpbreaks$wool, labels =
  unique(as.numeric(warpbreaks$wool)))

table(warpbreaks$wool)
# 
#  1  2 
# 27 27