【问题标题】:Sort dataset for grouped boxplot为分组箱线图排序数据集
【发布时间】:2020-12-06 13:37:17
【问题描述】:

我有一个相当凌乱的数据集,无法思考如何在 R 中执行此操作。替代方法是在 Excel 中执行此操作,但由于我有其中几个,这将需要很长时间。

所以我需要创建一个分组箱线图。 为此,我认为我需要一个包含 4 列的数据集:
物种、组(A 或 B)、变量、值
但我目前只有:
variable 和species_group(在一个列中),

这是一个可重现的例子:

variable <- c('precipitation','soil','land use')
species1_A <- c(10000, 500, 1322)
species1_B <- c(11500, 200, 600)
species2_A <- c(10000, 500, 1489)
species2_B <- c(15687, 800, 587)
df <- data.frame(variable, species1_A, species1_B,species2_A, species2_B)

所以我想我必须用 A 或 B 创建一个全新的列“组”,并以某种方式告诉 R 从“species1_A”名称中获取该信息。

任何人都可以帮助我吗?谢谢!

【问题讨论】:

    标签: r ggplot2 dplyr


    【解决方案1】:

    我建议如下:

    library(tidyverse)
    
    df %>%
      pivot_longer(contains("species"), names_to = "name", values_to = "value") %>% 
      separate(name, c("species", "group"), "_") %>% 
      ggplot() +
      facet_wrap(~variable) +
      aes(x = species, y = value, color = group) +
      geom_point()
    

    抱歉,我不确定您希望如何布局,并且您的示例数据集中每个组只有一个值。一旦每个组有更多变量,您可以将 geom_point 更改为 geom_boxplot。可以使用position_dodge 调整框之间的间距。 HTH。

    【讨论】:

    • 非常感谢!!差不多就是这样。现在唯一的问题是,在示例数据集中我写了“species1_A”,而实际上这是物种的名称。所以我有多个不同名称的列(即marmot_A,marmot_B,tiger_A,tiger_B,...)。因此,不幸的是,您的代码中的“包含(“物种”)”是行不通的。缺少值只是为了示例。别担心。
    • 可以用 contains(“_”) 替换 contains(“species”)。更多信息请查看tidyselect.r-lib.org/reference/select_helpers.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多