根据另一列的数值设置因子水平
问题描述:
我一直在想如何根据同一个data.frame中的另一列的值来排列因子。我一直用这个问题作为我努力的基础:根据另一列的数值设置因子水平
R - Order a factor based on value in one or more other columns
在我的例子,我喜欢的ftor
由order_ID
设置的级别。 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中的另一个因子的水平?
答
这里的答案,实际上由@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)
它应该是'水平= DF $ ftor [顺序(DF $ ORDER_ID)]' –
完美! @RichScriven是你想把这个作为答案,我会接受这个。我看到了这个问题。谢谢您的帮助。 – boshek