32 の異なるレベルの列があります。これらのレベルを置き換える必要があります
?
diet
diet contr
IDDM
Note
Other
denial
Resolved
Unsure
その列でいいえに
大規模な ifelse((column = "?" | column = "diet" |.....) ステートメントを使用してこれを実行できることはわかっていますが、これらの要因のバッグを置き換える効率的な方法があるかどうか疑問に思っていましたか?
32 の異なるレベルの列があります。これらのレベルを置き換える必要があります
?
diet
diet contr
IDDM
Note
Other
denial
Resolved
Unsure
その列でいいえに
大規模な ifelse((column = "?" | column = "diet" |.....) ステートメントを使用してこれを実行できることはわかっていますが、これらの要因のバッグを置き換える効率的な方法があるかどうか疑問に思っていましたか?
%in%
、 、levels()
およびlevels<-
置換機能を使用できます。たとえば、サンプル ベクトルを使用すると、x
( x <- factor(c("diet", "diet contr", "IDDM", "Note", "Other",
"denial", "Resolved", "Unsure")) )
# [1] diet diet contr IDDM Note Other
# [6] denial Resolved Unsure
# 8 Levels: denial diet diet contr IDDM Note ... Unsure
「食事」、「メモ」、「その他」をすべて「いいえ」に変更するには、それぞれのレベルを次のように変更できます
levels(x)[levels(x) %in% c("diet", "Note", "Other")] <- "No"
x
# [1] No diet contr IDDM No No
# [6] denial Resolved Unsure
# Levels: denial No diet contr IDDM Resolved Unsure
パッケージmapvalues
から機能を使用できます。plyr
次のコード スニペットを試してください。これは、データ フレームに因子列があることを前提としていますdf$column
。
library(plyr)
vals_to_replace <- c("diet", "diet contr", "IDDM")
mapvalues(df$column,
from = vals_to_replace,
to = rep("No", length(vals_to_replace)))
vals_to_replace
要素名は好きなだけ追加できます。