1

32 の異なるレベルの列があります。これらのレベルを置き換える必要があります

 ?
 diet
 diet contr
 IDDM
 Note
 Other
 denial
 Resolved
 Unsure

その列でいいえに

大規模な ifelse((column = "?" | column = "diet" |.....) ステートメントを使用してこれを実行できることはわかっていますが、これらの要因のバッグを置き換える効率的な方法があるかどうか疑問に思っていましたか?

4

2 に答える 2

4

%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
于 2015-03-24T03:03:49.477 に答える
1

パッケージ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要素名は好きなだけ追加できます。

于 2015-03-24T03:03:59.480 に答える