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