【问题标题】:R mean sorted by groups plot line diagram with ggplotR均值按组排序用ggplot绘制折线图
【发布时间】:2020-09-17 06:51:27
【问题描述】:

我有一些这样的数据。最终将有 20 次培训。

Intensitaet.Auswertung <- data_Auswertung [, c("Type", "training1", "training2", "training3", "training4", "training5")] 

    group                   `training1`    `training2`    `training3`    `training4`    `training5`
   <chr>                       <dbl>          <dbl>          <dbl>          <dbl>          <dbl>
 1 Group1                        6              6              4              2              8
 2 Group1                        4              5              5              5              7
 3 Group2                        5              3              3              3              6
 4 Group1                        5              3              4              3              6
 5 Group1                        5              7              8              6              7
 6 Group2                        4              3              4              5              7
 7 Group2                        5              5              5              5              7
 8 Group1                        7              8              6              5              8
 9 Group2                        3              4              4              4              8
10 Group2                        6              5              4              5              4
# ... with 11 more rows

我想用每个训练的均值绘制折线图,​​按组排序。

我希望有人可以帮助我,我是 R 的新手。

【问题讨论】:

  • 所以你想要一个列是什么意思?如果是这样,ergebniss_df&lt;-apply(Intensitaet.Auswertung[,2:length(Intensitaet.Auswertung)], 2, mean) 就是你要找的东西
  • 我想按组对平均值进行排序。每列应该有 2 个数字,第 1 组和第 2 组。如此接近,但不正确
  • 啊,我错过了你有 2 个组。将两组分成不同的df不是更容易吗?如果您需要更具体的帮助,我的建议是上传您的 df 的一小部分。你可以使用dput()。然后我们可以处理数据而不是猜测

标签: r line mean diagram


【解决方案1】:

你的意思是这样的吗?

library(tidyverse)
Intensitaet.Auswertung %>% 
    group_by(group) %>% 
    summarise(across(everything(), mean)) %>% 
    pivot_longer(cols = -group, names_to = "training", values_to = "mean") %>% 
    mutate(training = as.numeric(gsub("[^0-9]","",training))) %>% 
    ggplot(aes(x=training, y = mean, group = group, color = group)) + 
    geom_line()

【讨论】:

  • 是的,完全正确。如果我复制这些行,我会收到错误 Fehler: Must group by variables found in .data. * Column group is not found. Run rlang::last_error() to see where the error occurred.
  • 我知道了,它是 xlsx 中带有大字母的东西
【解决方案2】:

有办法做到这一点,但如果不尝试摆弄它一两分钟,我就不能肯定地说。这里有些人可以,但通常更喜欢使用来自 op 的小型可重现 df .你可以使用 dplyr/tidyverse 中的mutate() 命令,或者你可以使用 apply() 函数和一个单独的函数,如下所示:

df&lt;-apply(your_data, 2, function(x) if (your_data[,1]=="Group1") {mean} else {mean}) 但是我不知道它是否可以在没有先测试的情况下工作。您也可以像这样使用which() 命令或ifelse()

df&lt;-ifelse(your_data[,1]=="Group1", mean(yourdata[,2:length(your_data)]), mean(yourdata[,2:length(your_data)]))

但再次不知道它是否可以在不尝试/摆弄的情况下工作

【讨论】:

  • 我的原始文件是一个 xlsx 数据,我从这个 xlsx 创建了一个变量data_auswertung。我尝试了dput(data_auswertung)dput(Intensitaet.Auswertung),但我是 R 中的新手来解决它。我想把数据给你,你可以试试,如你所说
  • 创建数据的可重现子部分,这很有效:f&lt;-dput(head(Intensitaet.Auswertung)) write.csv(f, file="C:/...../test")
  • 您不需要上传它,在 dput() 之后,您可以将在 R 控制台中找到的结果作为纯文本复制粘贴到您的问题中
【解决方案3】:

Test
Intensitaet.Auswertung %&gt;%
group_by(group) %&gt;%
summarise(across(everything(), mean)) %&gt;%
pivot_longer(cols = -group, names_to = "training", values_to = "mean") %&gt;%
mutate(training = as.numeric(gsub("[^0-9]","",training))) %&gt;%
ggplot(aes(x=training, y = mean, group = group, color = group)) +
geom_line() +
scale_colour_manual(values = c("lightskyblue", "royalblue"), name = "Legende") +
ggtitle("Persönliches Intensitäslevel pro Training sortiert nach Gruppen") +
theme_bw() +
theme(axis.text.x = element_text(size = 12)) +
theme(axis.title.y = element_text(size = 15, angle = 90)) +
theme(axis.text.y = element_text(size = 12, hjust=1)) +
theme(axis.title.x = element_text(size = 15)) +
scale_y_continuous(name = "Intensität", breaks = c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) +
@ 987654337@

现在我有了这个漂亮的线图。 我想更改 x 任何 y 轴标题和 x 轴上的中断。

【讨论】:

  • 通过scale_x...得到它
猜你喜欢
  • 2016-04-06
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2014-12-27
  • 2013-02-18
  • 2019-05-24
  • 1970-01-01
相关资源
最近更新 更多