R中如何实现分组数据和绘制多行数据?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

我想在R中为这个数据集绘制多行图:(X=年份,y=值)

School_ID   Year    Value
A           1998    5
B           1998    10
C           1999    15
A           2000    7
B           2005    15

每所学校都有不同年份的数据。我想给每所学校打一句电话。

提问于
用户回答回答于

让我们创建一些数据:

dd = data.frame(School_ID = c("A", "B", "C", "A", "B"),
  Year = c(1998, 1998, 1999, 2000, 2005),
  Value = c(5, 10, 15, 7, 15))

然后,为了在基本图形中创建一个图,我们创建一个组的初始图:

plot(dd$Year[dd$School_ID=="A"], dd$Value[dd$School_ID=="A"], type="b",
     xlim=range(dd$Year), ylim=range(dd$Value))

然后迭代地在行中添加:

lines(dd$Year[dd$School_ID=="B"], dd$Value[dd$School_ID=="B"], col=2, type="b")
lines(dd$Year[dd$School_ID=="C"], dd$Value[dd$School_ID=="C"], col=3, type="b")

我用过type="b"来显示点和线。

或者使用ggplot 2:

require(ggplot2)
##The values Year, Value, School_ID are
##inherited by the geoms
ggplot(dd, aes(Year, Value,colour=School_ID)) + 
    geom_line() + 
    geom_point()
用户回答回答于

如果您希望水平轴包含1998至2005年间的所有年份,则删除factorx = factor(year)

  library(ggplot2)

df = read.table(text = "School_id Year Value 
 A           1998    5
 B           1998    10
 C           1999    15
 A           2000    7
 B           2005    15", sep = "", header = TRUE)

ggplot(data = df, aes(x = factor(Year), y = Value, color = School_id)) +       
  geom_line(aes(group = School_id)) + geom_point()

扫码关注云+社区

领取腾讯云代金券