2

我有两个因子,它们的级别数不同,但我想根据因子的名称和顺序,使用一个因子替换数据框中另一个因子中的值。

我的数据看起来像这样

x <- factor(c("one", "two", "three", "two", "three"))
y <- factor(c(NA, "foo", NA, "bar", NA))

(df <- data.frame(x, y))

      x    y
1   one <NA>
2   two  foo
3 three <NA>
4   two  bar
5 three <NA>

这就是我想要结束的地方,

      x    y     z
1   one <NA>   one
2   two  foo   foo
3 three <NA> three
4   two  bar   bar
5 three <NA> three

我应该将因子转换为字符向量吗?

4

1 回答 1

2

您可以使用levels(z) <- c(levels(y), levels(x))使 z 具有所需的级别,但是基础整数值可能无法正确关联。您最好分配给 z 使用as.character然后转换为因子。

例如

df$z <- as.factor( ifelse(is.na(df$y), as.character(df$x), as.character(df$y)) )
于 2012-11-27T21:51:46.193 回答