我正在尝试使用两个变量(DATE
和INT_RATE
)创建一个图,使用过滤器第三个变量GRADE
的内容。
问题是我无法弄清楚如何使用变量GRADE
作为行的过滤器。
在下面的部分中,我提供了一个详细的起始数据样本以及我想要实现的绘图。 提前谢谢。
STARTING DATA
| DATE | INT_RATE | GRADE |
––––––––––––––––––––––––––––––
| 1-jan | 5% | A | <-- A
| 5-feb | 3% | B |
| 9-feb | 2% | D |
| 1-apr | 3% | A | <-- A
| 5-jun | 5% | A | <-- A
| 1-aug | 3% | G |
| 1-sep | 2% | E |
| 3-nov | 1% | C |
| 8-dec | 8% | A | <-- A
| . | . | . |
| . | . | . |
| . | . | . |
这就是我想要实现的图形,这是一个非常基本的图形,除了之前需要的过滤工作。
WANTED RESULT:
GRADE "A"
INT_RATE
|
|
8%-| •
| ̷
| ̷
| ̷
5%-| • •
| \ /
| \ /
| \ /
| \ /
3%-| •
|
|
|
|
––––––––––––––––––––––––––––––––––-–––>
| ˆ ˆ ˆ ˆ DATE
|1-jan 1-apr 5-jun 8-dec
编辑1:
在@apax的宝贵帮助下,我设法获得了一个情节,但由于R显示它的奇怪方式,结果并不令人满意(我认为这可能与所讨论的数据集非常大的事实有关) 800k行)。你有什么建议吗?
顺便说一句,这解决了我的问题:
plot(x = DATE, y = INT_RATE, data = filter(df, GRADE == "A"))
我还上传了格式错误的图表的PNG。 再次感谢所有人。
答案 0 :(得分:2)
您可以使用ggplot2
和facet_wrap(...)
library(ggplot2)
ggplot(mtcars, aes(x=mpg, y=disp)) +
geom_point() +
facet_wrap(~cyl)
为您的数据
ggplot(data, aes(x=DATE, y=INT_RATE)) +
geom_line() +
facet_wrap(~GRADE)
P.S。这为所有等级提供了单独的图表。但那应该不是问题。
答案 1 :(得分:2)
这是一个快速的单行解决方案,我假设您的数据存储在名为df
的对象
library(dplyr) ## For filter() function below
plot(x = DATE, y = INT_RATE, data = filter(df, GRADE == "A"))