在 R 中的一列中查找并替换许多因素

Find and replace many factors in one column in R

我有 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

要将 "diet"、"Note" 和 "Other" 全部更改为 "No",您可以使用

更改它们各自的等级
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

您可以使用 plyr 包中的 mapvalues 函数。试试这个代码片段,它假定您在名为 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 添加任意数量的因子名称。