考虑以下数据框:
df <- data.frame(Asset = c("A", "B", "C"), Historical = c(0.05,0.04,0.03), Forecast = c(0.04,0.02,NA))
# Asset Historical Forecast
#1 A 0.05 0.04
#2 B 0.04 0.02
#3 C 0.03 NA
以及变量x
。 x
由用户在R脚本的开头设置,可以采用两个值:x = "Forecast"
或x = "Historical"
。
如果x = "Forecast"
,我想返回以下内容:对于每个资产,如果预测可用,请从“预测”列中返回相应的数字,否则,请从“历史”列中返回相应的数字”。如下所示,A和B都有一个预测值,该值在下面返回。 C缺少预测值,因此返回历史值。
Asset Return
1 A 0.04
2 B 0.02
3 C 0.03
但是,如果x= "Historical"
,只需返回历史专栏:
Asset Historical
1 A 0.05
2 B 0.04
3 C 0.03
我无法想出一个简单的方法,如果你有大量的行,暴力是非常低效的。有什么想法吗?
谢谢!
答案 0 :(得分:4)
首先,预处理您的数据:
df2 <- transform(df, Forecast = ifelse(!is.na(Forecast), Forecast, Historical))
然后提取选择的两列:
df2[c("Asset", x)]