【发布时间】:2019-04-13 11:34:23
【问题描述】:
我正在处理一个国家数据集,在不同的时间点具有不同的值。每个月有一次观察,所以我使用了 as.date 函数,日期为 01-07-2018、01-08-2018 等。 对于每个国家和每个日期都存在一个对应的值。 我想将其转换为一个数据框,其中所有国家/地区的值都在某个日期汇总。 我已经尝试过这样的重塑功能
reshape(Origin_wide, idvar = "Origin", timevar = "V5", direction = "wide")
V5 是日期变量,Origin 是国家。 据我所知,这是删除 as.date 集,这样日期和相应的值就不再被视为这样。 它可以以更流畅的方式完成吗?数据系列的时间序列方面消失了重塑功能丢失,因此我无法区分时间序列或按日期绘制它等。 此外,日期正在获得“值”前缀,据我所知,这是同样的问题。
下面是数据结构:
| V5 | Origin | Value |
|---------------------|------------------|----------|
| 01-09-2017 | USA | 45 |
|---------------------|------------------|----------|
| 01-10-2017 | USA | 47 |
|---------------------|------------------|----------|
| 01-11-2017 | USA | 49 |
|---------------------|------------------|----------|
| 01-09-2017 | Canada | 7 |
|---------------------|------------------|----------|
| 01-10-2017 | Canada | 13 |
|---------------------|------------------|----------|
| 01-11-2017 | Canada | 17 |
|---------------------|------------------|----------|
这是我想要的样子:
| V5 | Canada | USA |
|---------------------|------------------|----------|
| 01-09-2017 | 7 | 45 |
|---------------------|------------------|----------|
| 01-10-2017 | 13 | 47 |
|---------------------|------------------|----------|
| 01-11-2017 | 17 | 49 |
|---------------------|------------------|----------|
希望这是有道理的。 重现数据的随机小版本:
set.seed(1)
Data <- data.frame(Value = sample(1:10), Origin = sample(c("Mexico", "USA","Canada"), 10, replace = TRUE))
dates <- sample(seq(as.Date('2018/01/01'), as.Date('2018/05/01'), by="month"), 10, replace = TRUE)
Data <- cbind(dates,Data)
A look on the data as produced by the code
这里很清楚,并不是所有日期都定义了值。在这种情况下,该日期的值为 = 0。因此,在我第一次尝试使用 reshape 时,它会为所有没有观察到的日期产生 NA,这是完美的,因为我能够只输入 0。
【问题讨论】: