我想要实现的操作类似于 Excel 样式的 INDEX MATCH。本质上,我有一个框架:
dta <- read_excel('CPI/Global Inflation New.xlsm',
sheet = 'Cleaned', skip = 1)
colnames(dta)[1] <- 'Date'
dta$Date <- as.Date(dta$Date, format='%d%m%Y')
看起来像这样:
| Date US Canada EU Germany
---------------------------------------------------
1 | 2023-03-15 3.1 2.8 0.9 1.3
2 | 2023-04-15 3.3 2.5 1.2 1.5
3 | 2023-05-15 3.2 2.6 1.0 1.4
.
45 | 2024-04-15 2.9 2.7 2.1 2.1
46 | 2024-05-15 NA 2.6 NA 2.3
我想创建一个新框架,将国家/地区标题作为一列,将该国/地区的最新值放在第二列。例如:
| Country Latest
-----------------------------
1 | US 2.9
2 | Canada 2.6
3 | EU 2.1
到目前为止的“新框架”是:
new_frm <- data.frame(colnames(dta[, -1]))
colnames(new_frm)[1] <- 'Country'
new_frm <- cbind(new_frm, "Latest"=NA)
我不知道如何从 dta 框架中提取相关值。在 Excel 中,我只需将国家名称作为查找值传递给 MATCH 函数,然后返回相应的值(可能是最近三个日期)。事实证明,在 R 中复制这一点更具挑战性……不太确定该怎么做。任何建议都将不胜感激。
您可以获取长格式的数据,删除
NA
值并获取该国家/地区最新日期的相应值。使用不受欢迎的选择的示例:
reshape()
并by()
从基础开始。给予
您可能想要为 引入一条规则
NA
。