我有一个2018年苏丹镑每日汇率数据的数据集。我有月份、日期和年份列。它看起来像这样:
| Year | Month | Date | USDollar |
|------|-------|------|----------|
| 2018 | 6 | 10 | 38.50 |
| 2018 | 6 | 12 | 38.52 |
| 2018 | 6 | 14 | 38.61 |
| 2018 | 6 | 18 | 38.63 |
| 2018 | 6 | 21 | 38.63 |
| 2018 | 6 | 22 | 38.65 |
| 2018 | 6 | 23 | 39.41 |
| 2018 | 6 | 24 | 39.42 |
| 2018 | 7 | 02 | 39.43 |
| 2018 | 7 | 03 | 39.50 |
等等。如您所见,我没有每天的数据,但我有大多数日期的数据。我想看到的是检查每月和每周的变化,以查看数据中是否有任何突然的峰值。我想找到"剪切"数据的方法,看看是否存在数据突然上升或下降的自然断点。
现在,我只是使用scatter.smooth(df$month, df$usdollar)
创建了一些月度散点图,它确实显示汇率似乎在 10 月左右膨胀,但我想更具体。如何查看每周变化并更窄地划分数据?理想情况下,我想查看每周的变化并运行每周的汇总统计信息。这可能吗?
我真的是R的新手,所以任何建议将不胜感激!
使用data.table
中的week
函数,您可以添加每天的一周
library(data.table)
df$Week<- week(with(df,paste(Year,Month,Date,sep='-')))
> df
Year Month Date USDollar Week
1 2018 6 10 38.50 24
2 2018 6 12 38.52 24
3 2018 6 14 38.61 24
4 2018 6 18 38.63 25
5 2018 6 21 38.63 25
6 2018 6 22 38.65 25
7 2018 6 23 39.41 25
8 2018 6 24 39.42 26
9 2018 7 2 39.43 27
10 2018 7 3 39.50 27
然后你可以用
aggregate(USDollar ~ Year + Week, df, mean)
Year Week USDollar
1 2018 24 38.54333
2 2018 25 38.83000
3 2018 26 39.42000
4 2018 27 39.46500
<小时 />数据:
df <- structure(list(Year = c(2018L, 2018L, 2018L, 2018L, 2018L, 2018L,
2018L, 2018L, 2018L, 2018L), Month = c(6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 7L, 7L), Date = c(10L, 12L, 14L, 18L, 21L, 22L, 23L,
24L, 2L, 3L), USDollar = c(38.5, 38.52, 38.61, 38.63, 38.63,
38.65, 39.41, 39.42, 39.43, 39.5)), class = "data.frame", row.names = c(NA,
-10L))