在 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
添加任意数量的因子名称。
我有 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
添加任意数量的因子名称。