我有一个列如下所示的数据集:
Forecaster CountryName ProductName X2022 X2023 file_month
Allianz USA Inflation 6.1 2.5 7
EIU USA Inflation 7.7 3.7 7
Oxford USA Inflation 6.5 2.9 7
Allianz USA Inflation NA 3.3 8
EIU USA Inflation 8.3 3.7 8数据是长格式的,file_month显示数据生成的月份。现在,我需要创建新的列,该列引用预测者、CountryName、ProductName以及X2022或X2023更新的值。因此,在这个新列中,应该检查预测者是否修改了它的预测,如果是的话,新的修正值应该写在列中。
此外,由于整个数据集中有多个ProductName、CountryName和预报员,我想知道如何使这些组都能工作。
新的数据需要如下所示
Forecaster CountryName ProductName X2022 X2023 file_month update_2022 update_2023
Allianz USA Inflation 6.1 2.5 7
EIU USA Inflation 7.7 3.7 7
Oxford USA Inflation 6.5 2.9 7
Allianz USA Inflation NA 3.3 8 NA 3.3
EIU USA Inflation 8.3 3.7 8 8.3 NA为了代码可复制性,我添加了dput()输出。
data <- structure(list(Forecaster = c("Moody's Analytics", "Oxford Economics",
"Julius Baer", "Fitch Solutions", "SEB", "Allianz", "EIU", "FrontierView",
"Euromonitor Int.", "Fitch Ratings", "Scope Ratings", "Allianz",
"EIU", "Euromonitor Int.", "Fitch Ratings", "Fitch Solutions",
"FrontierView", "Julius Baer", "Moody's Analytics", "Oxford Economics",
"Scope Ratings", "SEB", "Allianz", "EIU", "Euromonitor Int.",
"Fitch Ratings", "Fitch Solutions", "FrontierView", "Julius Baer",
"Moody's Analytics", "Oxford Economics", "Scope Ratings", "SEB",
"Allianz", "EIU", "Euromonitor Int.", "Fitch Ratings", "Fitch Solutions",
"FrontierView", "Julius Baer", "Moody's Analytics", "Oxford Economics",
"Scope Ratings", "SEB", "Allianz", "EIU", "Euromonitor Int.",
"Fitch Ratings", "Fitch Solutions", "FrontierView", "Julius Baer",
"Moody's Analytics", "Oxford Economics", "Scope Ratings"),
CountryName = c("USA",
"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA",
"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA",
"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA",
"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA",
"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA",
"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA"),
ProductName = c("Inflation",
"Inflation", "Inflation", "Inflation", "Inflation", "Inflation",
"Inflation", "Inflation", "Inflation", "Inflation", "Inflation",
"Inflation", "Inflation", "Inflation", "Inflation", "Inflation",
"Inflation", "Inflation", "Inflation", "Inflation", "Inflation",
"Inflation", "Inflation", "Inflation", "Inflation", "Inflation",
"Inflation", "Inflation", "Inflation", "Inflation", "Inflation",
"Inflation", "Inflation", "Inflation", "Inflation", "Inflation",
"Inflation", "Inflation", "Inflation", "Inflation", "Inflation",
"Inflation", "Inflation", "Inflation", "Inflation", "Inflation",
"Inflation", "Inflation", "Inflation", "Inflation", "Inflation",
"Inflation", "Inflation", "Inflation"),
X2022 = c(6.58180388987726,
7.39615, 5.71530516215215, 6.5, NA, 6.1, 7.2, 6.2, 7.31, 6.9,
NA, 6.1, 7.7, 7.49, 6.9, 6.5, 6.2, 7.01535416655227, 6.94177167480419,
7.40344, NA, 7.5, 6.1, 7.7, 7.49, 6.9, 6.5, 6.2, 7.01535416655227,
6.94177167480419, 7.40344, NA, 7.5, NA, 8.3, 7.99, 7.8313, 7.3,
8.4, 7.45242025035952, 7.51681072158563, 8.04052, NA, 7.5, 8.2,
8.1, 8.01, 7.8313, 7.7, 8.6, 7.94553624147252, 7.82785941572661,
8.11193, NA),
X2023 = c(2.62716826359282, 1.73992, 2.32590118928029,
2.5, NA, 2.5, 2.8, 3.3, 4.02, 2.7, NA, 2.5, 3.7, 4.01, 2.7, 2.5,
3.3, 2.96909559451206, 2.70488419782626, 2.01984, NA, 4.2, 2.5,
3.7, 4.01, 2.7, 2.5, 3.3, 2.96909559451206, 2.70488419782626,
2.01984, NA, 4.2, NA, 3.7, 4.21, 3.7199, 3.5, 4.9, 3.02315479834998,
3.10232274684858, 3.17401, NA, 4.2, 3.2, 3.8, 4, 3.7199, 3.7,
5.7, 3.48906158848119, 3.36435085973137, 3.27724, NA),
file_month = c(5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L)), class = "data.frame", row.names = c(NA,-54L))https://stackoverflow.com/questions/73973251
复制相似问题