【问题标题】:How to apply the same factor levels to 2 variables containing similar data如何将相同的因子水平应用于包含相似数据的 2 个变量
【发布时间】:2017-05-10 06:20:35
【问题描述】:

我有以下数据框:

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",它源自另一个变量(我们称其为向量vec_fac):

vec_fac <- factor(LETTERS[1:6], levels = 1:6, labels = LETTERS[1:6])

因此,归根结底,我希望 df$group1df$group2vec_fac 都以相同的顺序具有相同的因子水平。我该怎么做?

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以这样做:

    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 ..
    

    【讨论】:

    • 你可以像 lapply(df, factor, levels(vec_fac)) 一样挤压它
    • 是的。我养成了每次都使用匿名函数的习惯:P
    猜你喜欢
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2016-06-06
    相关资源
    最近更新 更多