我有一个包含4个变量的数据:
id|name|year|value|
1 A 16 500
1 A 15 400
1 A 14 430
2 B 16 200
2 B 15 180
2 B 14 170
3 A 16 620
3 A 15 510
3 A 14 200
然后,我必须在ggplot中为每个id创建一个时间线图,但是显示其标签而不是它的id。我做的是:
ggplot(db, aes(x=year, y= value)) + geom_line() + facet_wrap(~db$id)
但是它显示的是图表写了他们的ID而不是他们的名字,所以我尝试了:
ggplot(db, aes(x=year, y= value)) + geom_line() + facet_wrap(~db$name)
它创建了带有正确标签的折线图,但是id 1和id 3都有相同的名称,因此,最后,它只创建了2个图表而不是3个,其中一个图表有6个观察而不是3个
有没有办法将名称与ID连接?然后通过id连接更正名称。
答案 0 :(得分:0)
<强>更新强>
在新行上创建名为name
和id
的合并name2
和id
列,然后生成图表。
db$name2 <- paste(db$name,db$id,sep="\n")
ggplot(db, aes(x=year, y= value)) + geom_line() + facet_wrap(~name2)
你可以这样做:
ggplot(db, aes(x=year, y= value)) +
geom_line() +
facet_wrap(~interaction(id, name))
为name和id的每个组合创建一个单独的图表。如果您要排除1.
和2.
,我们必须调整解决方案。
数据:
db <- structure(list(id = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L), name = structure(c(1L,
1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L), .Label = c("A", "B"), class = "factor"),
year = c(16L, 15L, 14L, 16L, 15L, 14L, 16L, 15L, 14L), value = c(500L,
400L, 430L, 200L, 180L, 170L, 620L, 510L, 200L)), .Names = c("id",
"name", "year", "value"), class = "data.frame", row.names = c(NA,
-9L))
答案 1 :(得分:0)
Marko212's answer肯定更好。但是,如果您需要在将来的某个时间点SQLiteConnection GetConnection():
与name
连接。
id