Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何显示每种科目在不同时期的进度_R_Graph_Statistics - Fatal编程技术网

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

我正在攻读硕士学位。论文,但我很难得到我想在R上看到和分析的东西

我有这样一个数据框:

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')