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 回答