R 如何显示每种科目在不同时期的进度
我正在攻读硕士学位。论文,但我很难得到我想在R上看到和分析的东西 我有这样一个数据框:R 如何显示每种科目在不同时期的进度,r,graph,statistics,R,Graph,Statistics,我正在攻读硕士学位。论文,但我很难得到我想在R上看到和分析的东西 我有这样一个数据框: Subject_ID Type Speed1 Speed2 Speed3 ... Speed20 1 A 25 27 24 31 2 B 32 21 35 33
Subject_ID Type Speed1 Speed2 Speed3 ... Speed20
1 A 25 27 24 31
2 B 32 21 35 33
3 B 21 25 27 29
4 A 31 28 38 20
5 A 30 22 21 28
6 B 27 33 31 24
来自z-树上编程的经济游戏。我正在用R读取数据。
在游戏中,受试者在每个周期中选择自己的速度,共有20个周期。
我想找出不同类型受试者之间的行为差异
我想描述每种类型的行为,每种类型使用几个主题。例如,A型受试者使用较高(平均)速度,但差异较大。另一方面,B型受试者在不同时期的平均速度可能较低,但方差较低
希望我能看到统计信息按类型分组。
此外,我还希望看到这样的图表:
这可能是一个很好的起点。如果你想比较这两种类型,你应该分析速度在所有科目中是如何演变的,然后做出决定。您的数据格式较宽,因此要使用
ggplot2
函数,首先必须使用pivot\u longer()
从tidyr
在tidyverse
中格式化为更长的格式。在那之后,就可以设计情节了。这里是一个代码,用于生成一个按类型划分的绘图,并按速度使用颜色线。包含的绘图具有功能区,但为了将其添加到绘图中,必须在数据集中定义限制变量。接下来是解决方案:
library(tidyverse)
#Code
df %>% pivot_longer(cols = -c(Subject_ID,Type)) %>%
rename(Speed=name) %>%
mutate(Speed=factor(Speed,levels = unique(Speed))) %>%
ggplot(aes(x=factor(Subject_ID),y=value,color=Speed,group=Speed))+
geom_point()+
geom_line(size=1)+
theme_bw()+
facet_wrap(.~Type,scales='free')+
xlab('Subject')
输出:
使用的一些数据:
#Data
df <- structure(list(Subject_ID = 1:6, Type = c("A", "B", "B", "A",
"A", "B"), Speed1 = c(25L, 32L, 21L, 31L, 30L, 27L), Speed2 = c(27L,
21L, 25L, 28L, 22L, 33L), Speed3 = c(24L, 35L, 27L, 38L, 21L,
31L), Speed20 = c(31L, 33L, 29L, 20L, 28L, 24L)), class = "data.frame", row.names = c(NA,
-6L))
输出:
更新:您可以使用groupby()
和summary()
与sum()
一起使用,以便使用下一个代码按类型聚合所有值:
#Code 3
df %>% pivot_longer(cols = -c(Subject_ID,Type)) %>%
rename(Speed=name) %>%
group_by(Subject_ID,Type) %>%
summarise(value=sum(value)) %>%
ggplot(aes(x=factor(Subject_ID),y=value,color=Type,group=Type))+
geom_point()+
geom_line(size=1)+
theme_bw()+
xlab('Subject')
输出:
按组计算平均值和SD并重新安排绘图方案将产生以下结果:
#Code 4
df %>% pivot_longer(cols = -c(Subject_ID,Type)) %>%
rename(Speed=name) %>%
group_by(Subject_ID,Type) %>%
summarise(Value=sum(value),Mean=mean(value),SD=sd(value),
Low=Value-Mean*SD,Up=Value+Mean*SD) %>%
ggplot(aes(x=factor(Subject_ID),y=Value,color=Type,group=Type))+
geom_line(size=1)+
geom_point()+
geom_ribbon(
aes(ymin = Low, ymax = Up,fill=Type),
alpha = 0.2
)+
theme_bw()+
xlab('Subject')
输出:
那很有用,谢谢。但是有没有办法按类型显示聚合输出分组?就像我发布的图片一样。@VicenteRamírezGarat是的,我会在几分钟内添加一个更新@VicenteRamírezGarat我已经添加了一个更新,希望能对你有所帮助!很好,看起来很棒!也许为了显示它的内部方差,我可以为上偏差和下偏差创建一个新的序列,它应该是均值+偏差和均值-偏差,或者如此,对吗?对R来说,我是新手,我是Python、Pandas和SQL。@VicenteRamírezGarat是的,你是对的,你可以利用这篇文章中的代码作为基础来获得你想要的情节!
#Code 4
df %>% pivot_longer(cols = -c(Subject_ID,Type)) %>%
rename(Speed=name) %>%
group_by(Subject_ID,Type) %>%
summarise(Value=sum(value),Mean=mean(value),SD=sd(value),
Low=Value-Mean*SD,Up=Value+Mean*SD) %>%
ggplot(aes(x=factor(Subject_ID),y=Value,color=Type,group=Type))+
geom_line(size=1)+
geom_point()+
geom_ribbon(
aes(ymin = Low, ymax = Up,fill=Type),
alpha = 0.2
)+
theme_bw()+
xlab('Subject')