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