2017-09-22 60 views
2

我有一個數據集,其中列「workclass」具有以下值:列與現有的因素代入數值R中

enter image description here

現在看來,我認爲值「隱私」是真的與'Private'相同,所以我想相應地更改它

如果我運行以下命令,則會收到一條錯誤消息,因爲該因子未定義。

> adult$workclass[adult$workclass == 'privat'] <- 'Private' 
    Warning message: 
    In `[<-.factor`(`*tmp*`, adult$workclass == "privat", value = c(7L, : 
    invalid factor level, NA generated 

如果我unfactor「欄和「重構」再次手術後,我結束了對「私人」兩個不同的因素。

> adult$workclass <- as.character(adult$workclass) 
    > adult$workclass[adult$workclass=='privat'] <- 'Private' 
    > adult$workclass <- as.factor(adult$workclass) 
    > summary(adult$workclass) 
      Federal-gov   Local-gov  Never-worked   Private 
        960    2093     7    22686 
     Self-emp-inc Self-emp-not-inc   State-gov  Without-pay 
       1116    2541    1298    14 
       Private    NA's 
        10    1836 

我該如何合併'privat'和'Private'?

回答

0

levels(adult$workclass)的輸出是什麼?看起來你的「私人」級別不完全等於字符串「私人」。

當我運行下面的代碼,我得到了想要的結果:

f <- data.frame(f=factor(c(
    rep("Federal-gov", 960), 
    rep("Local-gov", 2093), 
    rep("Never-worked", 7), 
    rep("Private", 22686), 
    rep("Self-emp-inc", 1116), 
    rep("Self-emp-not-inc", 2541), 
    rep("State-gov", 1298), 
    rep("Without-pay", 14), 
    rep("privat", 10), 
    rep("NA's", 1836) 
))) 

f$f[f$f=="privat"] <- "Private" 
f <- droplevels(f) 
table(f) 
Federal-gov  Local-gov    NA's  Never-worked 
     960    2093    1836    7 
Private  Self-emp-inc Self-emp-not-inc  State-gov 
     22696    1116    2541    1298 
Without-pay 
      14 
+0

你是對的,在字符串中有一個空格。 – imc

+0

很不幸,R如何在打印時引用字符串不一致......其中有些R不幸;) – aocall

+0

確實如此。在使用csv文件時,如果有疑問,最好使用通用空白分隔符(sep =「」)。 – imc

0

你可以試試:

library(dplyr) 
adult %>% 
    mutate(workclass = recode_factor(workclass, privat = "Private"))