如何在我的场景中调用 ggplot
How to call ggplot in my scenario
这是我的数据:
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 in 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() 是:)
'data.frame': 65 obs. of 30 variables:
$ email : chr ...
$ course.final: num 86.3 68.9 38.1 77.4 90 ...
$ part.final : num 78.2 71.5 54.2 98.2 99.8 ...
$ PA01.final : num 78 78 86.5 72.5 86.5 79.5 83 72 90 86 ...
$ PA02.final : num 88.5 93 93 93 91.5 90 93 93 86 85.5 ...
$ PA03.final : num 90 28 81.5 70 77 97 69 83 66 53 ...
$ PA04.final : num 88.8 55.2 0 70.2 73 ...
$ PA04.first : num 83.5 53.5 0 65 73 87 62.5 88 45 30 ...
$ PA04.resub : num 94 57 0 75.5 NA 94 83.5 NA NA 41.5 ...
$ PA05.final : num 96.5 81 0 87.8 96.5 ...
$ PA05.first : num 96.5 81 0 79 96.5 81 96.5 93.5 95 50.5 ...
$ PA05.resub : num NA NA NA 96.5 NA 98.5 NA NA NA NA ...
$ PA06.final : num 98.5 82.5 0 78.5 95 98.5 95 95 100 83 ...
$ PA06.first : num 98.5 82.5 0 78.5 95 98.5 95 95 100 83 ...
$ PA06.resub : num NA NA NA NA NA NA NA NA NA NA ...
$ PA07.final : num 97 63.5 0 63.5 86.2 ...
$ PA07.first : num 97 63.5 0 60 74 84.5 67 81 91.5 88 ...
$ PA07.resub : num NA NA NA 67 98.5 95 NA 98.5 95 NA ...
$ PA08.final : num 100 95 0 97.5 95 97.5 90 95 97.5 95 ...
$ PA08.first : num 100 95 0 97.5 95 97.5 90 95 97.5 95 ...
$ PA08.resub : num NA NA NA NA NA NA NA NA NA NA ...
$ PA09.final : num 98.5 33 0 69 64 98.5 74.5 81.5 100 93 ...
$ PA09.first : num 98.5 33 0 69 81.5 98.5 74.5 67.5 100 93 ...
$ PA09.resub : num NA 33 NA NA 46.5 NA NA 95.5 NA 93 ...
$ PA10.final : num 90 90 NA 98 96 100 90 87 93 97 ...
$ PA10.first : num 90 90 NA 98 96 100 90 87 93 97 ...
$ PA10.resub : logi NA NA NA NA NA NA ...
$ PA11.final : num 45.2 71.5 NA 34.5 91 ...
$ EC.final : num 78 15 20 26 10 155 30 90 47 30 ...
$ Exam.final : num 66.4 57.2 NA 63.3 87.5 ...
tidyr
中的以下行会将您的第一个 df 转换为正确的长格式。
然后您可以将其发送至 ggplot
df2 <- df %>% gather(key=Stage,value=Grade,-c(first,Assignment))
ggplot(df2,aes(x=first,y=Grade,colour=Stage)) + geom_point()
响应后续,以下可能有效...
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
有列 email, Assignment, first, Stage, Grade
...然后 ggplot(gxg...)
和以前一样。
这是我的数据:
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 in 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() 是:)
'data.frame': 65 obs. of 30 variables:
$ email : chr ...
$ course.final: num 86.3 68.9 38.1 77.4 90 ...
$ part.final : num 78.2 71.5 54.2 98.2 99.8 ...
$ PA01.final : num 78 78 86.5 72.5 86.5 79.5 83 72 90 86 ...
$ PA02.final : num 88.5 93 93 93 91.5 90 93 93 86 85.5 ...
$ PA03.final : num 90 28 81.5 70 77 97 69 83 66 53 ...
$ PA04.final : num 88.8 55.2 0 70.2 73 ...
$ PA04.first : num 83.5 53.5 0 65 73 87 62.5 88 45 30 ...
$ PA04.resub : num 94 57 0 75.5 NA 94 83.5 NA NA 41.5 ...
$ PA05.final : num 96.5 81 0 87.8 96.5 ...
$ PA05.first : num 96.5 81 0 79 96.5 81 96.5 93.5 95 50.5 ...
$ PA05.resub : num NA NA NA 96.5 NA 98.5 NA NA NA NA ...
$ PA06.final : num 98.5 82.5 0 78.5 95 98.5 95 95 100 83 ...
$ PA06.first : num 98.5 82.5 0 78.5 95 98.5 95 95 100 83 ...
$ PA06.resub : num NA NA NA NA NA NA NA NA NA NA ...
$ PA07.final : num 97 63.5 0 63.5 86.2 ...
$ PA07.first : num 97 63.5 0 60 74 84.5 67 81 91.5 88 ...
$ PA07.resub : num NA NA NA 67 98.5 95 NA 98.5 95 NA ...
$ PA08.final : num 100 95 0 97.5 95 97.5 90 95 97.5 95 ...
$ PA08.first : num 100 95 0 97.5 95 97.5 90 95 97.5 95 ...
$ PA08.resub : num NA NA NA NA NA NA NA NA NA NA ...
$ PA09.final : num 98.5 33 0 69 64 98.5 74.5 81.5 100 93 ...
$ PA09.first : num 98.5 33 0 69 81.5 98.5 74.5 67.5 100 93 ...
$ PA09.resub : num NA 33 NA NA 46.5 NA NA 95.5 NA 93 ...
$ PA10.final : num 90 90 NA 98 96 100 90 87 93 97 ...
$ PA10.first : num 90 90 NA 98 96 100 90 87 93 97 ...
$ PA10.resub : logi NA NA NA NA NA NA ...
$ PA11.final : num 45.2 71.5 NA 34.5 91 ...
$ EC.final : num 78 15 20 26 10 155 30 90 47 30 ...
$ Exam.final : num 66.4 57.2 NA 63.3 87.5 ...
tidyr
中的以下行会将您的第一个 df 转换为正确的长格式。
然后您可以将其发送至 ggplot
df2 <- df %>% gather(key=Stage,value=Grade,-c(first,Assignment))
ggplot(df2,aes(x=first,y=Grade,colour=Stage)) + geom_point()
响应后续,以下可能有效...
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
有列 email, Assignment, first, Stage, Grade
...然后 ggplot(gxg...)
和以前一样。