Ras*_*l89 2 r linechart line ggplot2 trendline
我正在尝试使用 r 创建简单的折线图,将数据点连接到受访者组的平均值(也可以用不同的颜色标记它们或区分它们等)我的数据是长格式的,并按如下所示排序(我如果有任何价值,也可以使用宽格式):
ID gender week class motivation
1 male 0 1 100
1 male 6 1 120
1 male 10 1 130
...
2 female 0 1 90
2 female 6 1 NA
2 female 10 1 117
...
3 male 0 2 89
3 male 6 2 112
3 male 10 2 NA
...
Run Code Online (Sandbox Code Playgroud)
基本上,每个受访者总共测量了n次,并且每个人的场合(周)都相同。一些受访者在一次或多次失踪。让我们说动机。性别、阶级和 ID 等变量不会改变,动机会。我尝试使用 ggplot2 获取折线图
## define base for the graphs and store in object 'p'
plot <- ggplot(data = DataRlong, aes(x = week, y = motivation, group = gender))
plot + geom_line()
Run Code Online (Sandbox Code Playgroud)
例如,作为分组变量,我想使用类或性别。但是,我的方法不会导致连接每组平均值的线。我也为每个测量场合得到垂直线。这是什么意思?我冷想解决这个问题的唯一方法是创建一个新的变量 average.motivation 并计算每个组的平均值,然后将这个平均值分配给该组的所有成员。但是,这意味着当我想根据另一个因素显示组行时,我对每个组变量都这样做了。此外,该图如何处理丢失的数据?(如果一个组的一个成员有一个缺失值,我仍然希望这个场合的组平均值来计算点,而不是省略该组的整个场合)。
编辑:谢谢,dplyr 的解决方案适用于我所有的分类变量。现在,我试图弄清楚如何通过基于第二/第三因素为它们的线条着色来区分子组。例如,我为“class2”的组绘制了 20 条线,但如果它们属于相同类型的类(“class_type” ,例如 A、B 或 C = 20 条线,三组颜色)。
我已将第二个因素添加到“mean_data2”。这很好用。接下来,我尝试更改 ggplot 中的颜色参数(也像在 geom_line 中一样尝试过),但那样的话,我就没有 20 行了。
mean_data2 <- group_by(DataRlong, class2, class_type, occ)%>% summarise(procras = mean(procras, na.rm = TRUE))
库(ggplot2) ggplot(na.omit(mean_data2), aes(x = occ, y = procras, colour=class2)) + geom_point() + geom_line(aes(colour=class_type))
您还可以使用该dplyr包来聚合数据:
library(dplyr)
mean_data <- group_by(data, gender, week) %>%
summarise(motivation = mean(motivation, na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)
您可以使用以下na.omit()方法删除NA值:
library(ggplot2)
ggplot(na.omit(mean_data), aes(x = week, y = motivation, colour = gender)) +
geom_point() + geom_line()
Run Code Online (Sandbox Code Playgroud)
这里不需要显式使用group美学,因为ggplot它将自动按图中的分类变量对线条进行分组。您拥有的唯一分类变量是gender. (有关更多信息,请参阅此答案)。
| 归档时间: |
|
| 查看次数: |
14865 次 |
| 最近记录: |