我有两个因素并且它们没有相同数量的级别,但我想使用一个因子来替换数据框内另一个因子中的值,这取决于因子的名称和顺序。 / 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
我应该将因子转换为字符向量吗?
答案 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)) )