我有一个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的新手,所以任何建议都将不胜感激!
发布于 2020-06-24 18:13:32
使用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))
https://stackoverflow.com/questions/62561385
复制相似问题