如何重命名因子的级别?

问题描述 投票:0回答:2

我有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 
r r-factor
2个回答
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"

0
投票

看起来好像您正在尝试重新标记您的因子,以便每个级别都有一个数字标签,而不是现有的文本标签。这不需要仔细复制每个现有标签,或者为此目的破坏它们的标点符号。

从integer和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 
© www.soinside.com 2019 - 2024. All rights reserved.