从角色和情节ts获取匹配的线条

时间:2015-07-14 11:18:23

标签: r plot time-series

我有一个包含日期,卷和公司等列的数据框。 我想知道如何为每家公司只保留一行?

grep会返回行数,但我该如何才能获得完整的行?

除了如何在一个单一的时间序列图上绘制每个公司的这些数量?

我找到了plot.ts但是我无法做到这一点而我没有公司的数量就好像我的情节。我的完整数据集它没有区分公司然后有一个错误的时间系列(单个日期多点)

我想有一个这样的情节: time series plot 但不是"网站"拥有"卷"而不是"鞋子,袜子,蕾丝"有我公司/科目的名称

或者像那样,但是与svolumes一样 time series plot 2

这就是我的数据的样子:

> head(data)
            Date Time Subject  Sscore  Smean Svscore Sdispersion Svolume  Sbuzz    Last close
1 2015-07-08 09:10:00     MMM -0.2280 0.2593 -0.2795       0.375       8 0.6026 155.430000000
2 2015-07-08 09:10:00     ACE -0.4415 0.3521 -0.0374       0.500       4 0.7200 104.460000000
3 2015-07-07 09:10:00     AES  1.9821 0.0233  1.1743       1.000       1 1.9445  13.200000000
4 2015-07-04 09:10:00     AFL -2.9335 0.0035 -0.2975       1.000       1 0.8321  61.960000000
5 2015-07-07 09:10:00     MMM  0.2977 0.2713 -0.7436       0.400       5 0.4895 155.080000000
6 2015-07-07 09:10:00     ACE -0.2331 0.3519 -0.1118       1.000       3 0.7196 103.330000000
         Company name       Date
1          3M Company 2015-07-08
2         ACE Limited 2015-07-08
3 The AES Corporation 2015-07-07
4          AFLAC Inc. 2015-07-04
5          3M Company 2015-07-07
6         ACE Limited 2015-07-07

非常感谢!

2 个答案:

答案 0 :(得分:1)

我还不完全清楚你拥有什么以及你想要什么。没有可重复的例子,这非常困难!

我假设您希望按公司和日期汇总您的数据。您可以使用data.table包来实现此目的:

library(data.table)
setDT(data)
newdata<-data[,.(volume=sum(Svolume)),by=.("Company name",Date)]
# Notice that you can use any other function instead of sum. mean, to mention one

获得newdata个对象后,可以尝试使用ggplot2绘制对象:

library(ggplot2)
library(scales)
pl<-ggplot(newdata,aes(x=Date,y=volume,group=`Company name`))+geom_line()+scale_x_date(format="%d-%m-%y")
pl

此解决方案旨在通用(因为您的问题中未正确定义所需的输出),因此可能需要进行一些小的调整。

答案 1 :(得分:0)

我发现如何做到这一点,如果它可以帮助别人:

library(ggplot2)
ggplot(data)+geom_line(aes(x=data$Date, y=data$Svolume, group=data$Subject, color=data$Subject))