gpt4 book ai didi

r - 将因子转换为整数,同时保持因子级别排序

转载 作者:行者123 更新时间:2023-12-04 23:40:35 24 4
gpt4 key购买 nike

我有一个 R 数据框,其中一列是一个因子,其级别具有隐式排序。 如何将因子水平转换为特定整数 以下列方式:

  • “非常不同意”--> 1
  • “有点不同意”--> 2
  • “中性”--> 3
  • “有点同意”--> 4
  • “非常同意”--> 5

  • 例如,这是我的数据框:
    agree <- c("Strongly agree", "Somewhat disagree", "Somewhat agree",
    "Neutral", "Strongly agree", "Strongly disagree", "Neutral")
    age <- c(41, 35, 29, 42, 31, 22, 58)

    df <- data.frame(age, agree)
    df
    # age agree
    # 1 41 Strongly agree
    # 2 35 Somewhat disagree
    # 3 29 Somewhat agree
    # 4 42 Neutral
    # 5 31 Strongly agree
    # 6 22 Strongly disagree
    # 7 58 Neutral

    str(df)
    # 'data.frame': 7 obs. of 2 variables:
    # $ age : num 41 35 29 42 31 22 58
    # $ agree: Factor w/ 5 levels "Neutral","Somewhat agree",..: 4 3 2 1 4 5 1

    现在,我想转换 agree使用我上面显示的映射将列作为整数列。

    我已经搜索了有关将因子转换为整数的其他问题,但它们与维护因子排序无关。

    " How to convert a factor to an integer\numeric without a loss of information? "

    " Convert factor to integer "

    " Convert factor to integer in a data frame "

    最佳答案

    您需要先定义因子的顺序:

    ordering <- c("Strongly disagree", "Somewhat disagree", "Neutral", "Somewhat agree", "Strongly agree")

    然后,当您第一次创建因子时,您应该使用该定义:
    agreeFactor <- factor(agree, levels = ordering)

    然后,您应该能够获得您的有序因子:
    as.numeric(agreeFactor)

    您也可以在使用 as.numeric() 时仅应用顺序,但如果您决定稍后检索数字向量而忘记应用“levels =”参数,这可能会导致不一致。

    e:如果您想直接将数字导入您的数据框中,只需使用:
    df$agree <- as.numeric(factor(df$agree, levels = ordering))

    关于r - 将因子转换为整数,同时保持因子级别排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621334/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com