我有32个不同级别的列。我需要替换这些级别
?
diet
diet contr
IDDM
Note
Other
denial
Resolved
Unsure
在该列中否
我知道我可以使用一个巨大的ifelse((column =“?”| column =“diet”| .....)语句来做到这一点,我想知道是否有一种有效的方法来替换这些包因素?
答案 0 :(得分:3)
您可以使用%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
改变&#34;饮食&#34;,&#34;注意&#34;和&#34;其他&#34;所有到&#34;否&#34;您可以使用
更改各自的级别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
答案 1 :(得分: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
添加任意数量的因子名称。