【问题标题】:Set levels of a factor based on numeric value of another column [closed]根据另一列的数值设置因子的水平[关闭]
【发布时间】:2016-11-24 03:14:33
【问题描述】:

我一直试图弄清楚如何根据同一 data.frame 中另一列的值对因子进行排序。我一直将这个问题作为我努力的基础:

R - Order a factor based on value in one or more other columns

在我的示例中,我喜欢由order_ID 设置的ftor 的级别。 order_ID 只是订单的等级。这是我目前所拥有的:

df <- data.frame(order_ID=c(5,3,1,4,2),
           ftor=LETTERS[1:5])


df$ftor <- factor(df$ftor, levels=df[order(df$order_ID),], ordered=TRUE)

这是我在上述尝试后尝试关卡时得到的结果:

> levels(df$ftor)
[1] "c(1, 2, 3, 4, 5)" "c(3, 5, 2, 4, 1)"

基于order_ID 的值,这是我所期望的:

> levels(df$ftor)
[1] "C" "B" "E" "D" "A"

总之,谁能推荐一种方法,我可以使用一列的级别来设置同一 data.frame 中另一个因素的级别?

【问题讨论】:

  • 应该是levels=df$ftor[order(df$order_ID)]
  • 完美! @RichScriven 是你想把这个作为答案,我会接受这个。我看到了这个问题。感谢您的帮助。

标签: r


【解决方案1】:

@RichScriven 实际上提供的答案是我没有设置我想要的列的顺序 (df$ftor) 而是整个 data.frame (df)。此外,索引很不稳定。所以最终我替换了这个:

df$ftor <- factor(df$ftor, levels=df[order(df$order_ID),], ordered=TRUE)

用这个:

df$ftor <- factor(df$ftor, levels=df$ftor[order(df$order_ID)], ordered=TRUE)

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    相关资源
    最近更新 更多