fct_reorder的作用是通過另一個變量的值對應所需要重新排的變量值,解釋起來有點怪,我們還是透過實際例子進行
基本語法
fct_reorder(dataset$var, dataset$var, desc)
可用參數
desc : 預設為TRUE,要變更排序方式填入desc即可
建立一個數據框,包含數字與文字
factor_df <- tibble(
number = c(10, 100, 50, 90, 20),
float = c(1.1, 55.2, 35.1, 3.9, 120.5),
animal = c("dog", "cat", "rat", "fish", "lion")
)
# 輸出結果
r$> factor_df
# A tibble: 5 x 3
number float animal
<dbl> <dbl> <chr>
1 10 1.1 dog
2 100 55.2 cat
3 50 35.1 rat
4 90 3.9 fish
5 20 120. lion
將animal欄位變更為因子
# 變更為因子
factor_df$animal <- as.factor(factor_df$animal)
# 輸出結果
r$> str(factor_df$animal)
Factor w/ 5 levels "cat","dog","fish",..: 2 1 5 3 4
透過number欄位的值對animal欄位的順序做調整,依照number欄位的值10 < 20 < 50 < 90 < 100做排序
# 取number的值對animal做排序
fct_reorder(factor_df$animal, factor_df$number)
# 輸出結果
r$> fct_reorder(factor_df$animal, factor_df$number)
[1] dog cat rat fish lion
Levels: dog lion rat fish cat
加入desc重新排列
# 取number的值對animal做desc排序
fct_reorder(factor_df$animal, factor_df$number, desc)
# 輸出結果
r$> fct_reorder(factor_df$animal, factor_df$number, desc)
[1] dog cat rat fish lion
Levels: cat fish rat lion dog
不一定只能操作字符,也可以將number欄位變更為因子
# 將number欄位變更為因子
factor_df$number <- as.factor(factor_df$number)
# 輸出結果
r$> str(factor_df$number)
Factor w/ 5 levels "10","20","50",..: 1 5 3 4 2
透過float欄位的值對number欄位進行排序
# 取float的值對number做排序
fct_reorder(factor_df$number, factor_df$float)
# 輸出結果
r$> fct_reorder(factor_df$number, factor_df$float)
[1] 10 100 50 90 20
Levels: 10 90 50 100 20
沒有留言:
張貼留言