用一个因子替换另一个因子(在数据帧内)

时间:2012-11-27 21:46:14

标签: r vector replace

我有两个因素并且它们没有相同数量的级别,但我想使用一个因子来替换数据框内另一个因子中的值,这取决于因子的名称和顺序。 / p>

我的数据看起来像这样,

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

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

1 个答案:

答案 0 :(得分:2)

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

例如

df$z <- as.factor( ifelse(is.na(df$y), as.character(df$x), as.character(df$y)) )