【发布时间】:2020-09-16 09:08:36
【问题描述】:
我有一个包含两个因素的数据框,比如这个:
data <- data.frame(
x = factor(rep(letters[1:3], 2)),
y = factor(rep(c('z','x','y'), each=2), c('z','x','y'))
)
data
x y
1 a z
2 b z
3 c x
4 a x
5 b y
6 c y
我想将所有x 为a 的ys 转换为NAs。所以我尝试:
factor(ifelse(data$x=='a', NA, as.character(data$y)))
<NA> z x <NA> y y
Levels: x y z
获得与原始数据不同的级别顺序,即:
data$y
z z x x y y
Levels: z x y
除了像这样的蛮力之外,您能否提出任何保持原始顺序的方法:
factor(ifelse(data$x=='a', NA, as.character(data$y)), c('z','x','y'))
<NA> z x <NA> y y
Levels: z x y
【问题讨论】:
-
data[data$x == "a", "y"] <- NA(就我个人而言,我几乎从不在我的代码中使用ifelse。) -
谢谢!为什么不把它变成一个答案?
-
太琐碎了。
-
有用 + 简短 > 琐碎