如何将相同的因子水平应用于包含相似数据的2个变量

时间:2017-05-09 22:14:58

标签: r

我有以下数据框:

df <- data.frame(group1 = factor(c("B", "C", "D", "E", "F", "C", "D", "E", "F", "D", "E", "F", "E", "F", "F")),
                 group2 = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C", "D", "D", "E"))
df$group2 <- as.character(df$group2)

我希望group1group2变量都是具有相同以下级别的因素:"A", "B", "C", "D", "E", "F",它来自另一个变量(让我们称之为向量{ {1}}):

vec_fac

因此,在一天结束时,我希望vec_fac <- factor(LETTERS[1:6], levels = 1:6, labels = LETTERS[1:6]) df$group1df$group2具有相同顺序的相同因子级别。我怎么会这样做?

1 个答案:

答案 0 :(得分:4)

你可以这样做:

df[] <- lapply(df, function(x) factor(x, levels = levels(vec_fac)))

输出:

> str(df)
'data.frame':   15 obs. of  2 variables:
 $ group1: Factor w/ 6 levels "A","B","C","D",..: 2 3 4 5 6 3 4 5 6 4 ...
 $ group2: Factor w/ 6 levels "A","B","C","D",..: 1 1 1 1 1 2 2 2 2 3 ..