データセットがあります。列 "workclass"には次の値があります。
今、私にとっては、値「privat」は実際には「Private」と同じなので、それに応じて変更したいと思います。
次のコマンドを実行すると、係数が定義されていないのでエラーメッセージが表示されます。
> adult$workclass[adult$workclass == "privat"] <- "Private"
Warning message:
In `[<-.factor`(`*tmp*`, adult$workclass == "privat", value = c(7L, :
invalid factor level, NA generated
操作後に列を「unfactor」し、再度「refactor」すると、「Private」には2つの異なる要素が生じます。
> 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"をマージするにはどうすればいいですか?
回答:
回答№1は0の出力は何ですか? levels(adult$workclass)
?あなたの "Private"レベルが、 "Private"という文字列と完全に同じではないようです。
次のコードを実行すると、望ましい結果が得られます。
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
回答№2の場合は0
あなたが試すことができます:
library(dplyr)
adult %>%
mutate(workclass = recode_factor(workclass, privat = "Private"))