我想根據組列的因子級別重新排序我的數字列。我的玩具資料如下:
toy.df <- data.frame(group = c(rep("C",3), rep("B", 2),rep("A", 1)), num = c(rep(10, 3), rep(5,2), 20))
toy.df$group <- factor(toy.df$group, levels = c('B', 'A', 'C'))
toy.df$num <- factor(toy.df$num, levels = c('B', 'A', 'C'))
最后一行代碼不起作用。您知道如何使用列組級別設定列 num 的級別嗎?
謝謝
uj5u.com熱心網友回復:
假設您想調整 的級別順序num以反映 的級別順序group,例如 的級別為num5、20、10,那么您可以對資料框進行排序group,然后使用forcats::fct_inorder. 這將按num出現順序分配因子水平:
library(tidyverse)
df <- toy.df %>%
arrange(group) %>%
mutate(num = fct_inorder(factor(num)))
levels(df$num)
[1] "5" "20" "10"
注意:這將更改資料框的順序。
您還可以fct_reorder使用自定義函式重新排序num基于group:
df <- toy.df %>%
mutate(num = fct_reorder(factor(num), group, function(x) as.numeric(unique(x))))
另外,您也可以對資料進行排序,然后拉出來的獨特價值num,其是通過有序的group,并使用指定的級別:
df <- toy.df %>%
mutate(num = factor(num, unique(arrange(toy.df, group)$num)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376448.html
