我有以下数据框:
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)
我希望group1
和group2
变量都是具有相同以下级别的因素:"A", "B", "C", "D", "E", "F"
,它来自另一个变量(让我们称之为向量{ {1}}):
vec_fac
因此,在一天结束时,我希望vec_fac <- factor(LETTERS[1:6], levels = 1:6, labels = LETTERS[1:6])
,df$group1
和df$group2
具有相同顺序的相同因子级别。我怎么会这样做?
答案 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 ..