R 如何在我的场景中调用ggplot

R 如何在我的场景中调用ggplot,r,tidyr,R,Tidyr,以下是我的数据: Assignment final first resub 44 PA07 59.00 48.5 69.5 46 PA07 74.25 72.5 76.0 63 PA07 98.50 98.5 NA 36 PA07 76.25 71.0 81.5 32 PA07 84.50 77.5 91.5 我想用ggplot做一个散点图,其中X轴是“first”中的值。有两组点,一组使用final中的

以下是我的数据:

   Assignment final first resub
44       PA07 59.00  48.5  69.5
46       PA07 74.25  72.5  76.0
63       PA07 98.50  98.5    NA
36       PA07 76.25  71.0  81.5
32       PA07 84.50  77.5  91.5
我想用ggplot做一个散点图,其中X轴是“first”中的值。有两组点,一组使用final中的值作为y,另一组使用resub中的值作为y

我尝试了上面的布局和这个布局,但仍然不知道如何做

     Assignment Stage  Grade
719        PA06 final  78.50
860        PA06 resub     NA
1866       Exam final  53.24
665        PA05 resub     NA
1881       Exam final  99.34
269        PA03 final  66.00
1675       PA10 resub     NA
761        PA06 final  98.50
498        PA04 resub     NA
435        PA04 first 100.00
根据@andrew的建议继续: 现在我的代码看起来像这样,但我认为我可以重构它,但不确定如何重构:

gxg = gather(grades, key, Grade, -email)

gxg = separate(gxg, key, c("Assignment", "Stage"))

gxg = spread(gxg, Stage, Grade)

gxg = gather(gxg, key=Stage, value=Grade,-c(first,Assignment, email))
(顺便说一句,起始str()是:)


tidyr
中的以下行将把您的第一个df转换为正确的长格式。 然后您可以将其发送到
ggplot

df2 <- df %>% gather(key=Stage,value=Grade,-c(first,Assignment))

ggplot(df2,aes(x=first,y=Grade,colour=Stage)) + geom_point()
df2%聚集(键=阶段,值=等级,-c(第一,分配))
ggplot(df2,aes(x=第一,y=等级,颜色=阶段))+geom_点()

作为对后续行动的回应,以下措施可能会奏效

gxg <- grades %>% 
       gather(key=key,value=Grade,-email) %>% #convert to long format
       separate(key,c(Assignment,Stage)) %>% #separate assignment and stage
       spread(key=Stage,value=Grade) %>% #convert Stage back to wide format (as it includes first as well as final and resub)
       gather(key=Stage,value=Grade,c(final,resub)) #convert final and resub to long format leaving first intact
gxg%
收集(key=key,value=Grade,-email)%>%#转换为长格式
分开(键,c(任务,阶段))%>%#分开任务和阶段
排列(键=阶段,值=等级)%>%#将阶段转换回宽格式(因为它包括第一个、最后一个和第二个)
聚集(键=阶段,值=等级,c(最终结果,resub))#将最终结果和resub转换为长格式,保持第一个完整
希望这将导致gxg的


…然后像以前一样
ggplot(gxg…

Nice。顺便问一下,为什么人们更喜欢你写的东西而不是:df2如果你在
tidyverse
中工作,
%>%
管道通常更容易。例如,在这里,您可以执行
df%>%gather(…)%%>%ggplot(aes(…)+geom_point()
,如果您愿意的话。这只是一个偏好的问题,尽管我发现管道通常是一种更直观的方式。我只是觉得%>%操作符看起来非常难看…但在多阶段管道中它是有意义的。是的-我只是在意识到Rstudio中有一个快捷键时才进入它!请看问题的补充?
gxg <- grades %>% 
       gather(key=key,value=Grade,-email) %>% #convert to long format
       separate(key,c(Assignment,Stage)) %>% #separate assignment and stage
       spread(key=Stage,value=Grade) %>% #convert Stage back to wide format (as it includes first as well as final and resub)
       gather(key=Stage,value=Grade,c(final,resub)) #convert final and resub to long format leaving first intact