簡體   English   中英

`fct_reorder()` 中的錯誤:。 `,f` 必須是因子或字符向量,而不是數據框 - 嘗試重新排序條 plot

[英]Error in `fct_reorder()`: ! `.f` must be a factor or character vector, not a data frame - trying to reorder a bar plot

我有一個匯總表,其中包含 940 行數據集中的 4 個變量的平均值:

activity_means <- activity_daily_clean %>%
  summarize(sedentary = mean(sedentary_minutes),
            lightly_active = mean(lightly_active_minutes),
            fairly_active = mean(fairly_active_minutes),
            very_active = mean(very_active_minutes))

我想把它們 plot 變成一個簡單的欄 plot,但是活動強度的級別(久坐 - 輕度活躍 - 相當活躍 - 非常活躍)顯得雜亂無章:

act_means_df <- data.frame(
  activity_intensity=c("sedentary", "lightly active", "fairly active", "very active"),
  intens_means=c(991.2106, 192.8128, 13.56489, 21.16489)
)

ggplot(act_means_df)+
  geom_col(aes(x=activity_intensity, y=intens_means))

雜亂無章的條形圖

我嘗試按照R 圖表庫中的指南按照第二個變量的值重新排序柱 plot:

act_means_df <- data.frame(
  activity_intensity=c("sedentary", "lightly active", "fairly active", "very active"),
  intens_means=c(991.2106, 192.8128, 13.56489, 21.16489)
) %>%
  mutate(f_act_int = factor(activity_intensity))

act_means_df %>%
  fct_reorder(f_act_int, intens_means) %>%
  ggplot(aes(x=f_act_int, y=intens_means))+
  geom_bar(stat="identity", fill="#f68060", alpha=.6, width=.4) +
  coord_flip() +
  xlab("") +
  theme_bw()

但是當我運行最后一個塊時出現以下錯誤: fct_reorder()中的錯誤:! .f必須是因子或字符向量,而不是數據框

我確認 f_act_int 是否是一個因素: str(act_means_df) : 'data.frame': 4 obs。 3 個變量: $ activity_intensity: chr "sedentary" "lightly active" "fairly active" "very active" $ intens_means: num 991.2 192.8 13.6 21.2 $ f_act_int: factor w/ 4 levels "fairly active",..: 3 2 1 4個

但是,當我嘗試使用class(f_act_int)單獨檢查 object 時,錯誤消息顯示“未找到對象‘f_act_int’”。

有人知道我錯過了什么嗎?

您需要在dplyr::mutate()中使用fct_reorder

這不是解決此問題的唯一方法,但錯誤的要點是,當它需要一個因子或字符向量時,您正在傳遞整個數據框。 相反,試試這個:

act_means_df %>%
  mutate(fa_act_in = fct_reorder(f_act_int, intens_means)) %>%
  ggplot(aes(x=f_act_int, y=intens_means))+
  geom_bar(stat="identity", fill="#f68060", alpha=.6, width=.4) +
  coord_flip() +
  xlab("") +
  theme_bw()

您的全局環境中沒有 object 稱為f_act_in 當您在mutate()中調用fct_reorder() ) 時,R 在您的數據框中查找具有該名稱的列,然后執行操作以返回更新后的數據框。 然后將更新后的數據框傳遞給ggplot()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM