returns <- data.frame(date = c('2015.01.01','2015.01.02','2015.01.03','2015.01.04'),
Asset1 = as.numeric(c('0.1','0.1','0.1','0.1')),
Asset2 = as.numeric(c('0.2','0.2','0.2','0.2')),
Asset3 = as.numeric(c('0.3','0.3','0.3','0.3')))
Rank <- data.frame(date = c('2015.01.01','2015.01.02','2015.01.03','2015.01.04'),
Asset1 = as.numeric(c('3','3','3','3')),
Asset2 = as.numeric(c('1','1','1','1')),
Asset3 = as.numeric(c('2','2','2','2')))
我想将等级1返回到新数据框中的第1列。数字和等级可以改变很多,所以只是移动列不起作用。我认为我的英语在第一篇文章中并没有说得太清楚。结果应如下所示。
Result <- data.frame(date = c('2015.01.01','2015.01.02','2015.01.03','2015.01.04'),
Rank1 = as.numeric(c('0.2','0.2','0.2','0.2')),
Rank2 = as.numeric(c('0.3','0.3','0.3','0.3')),
Rank3 = as.numeric(c('0.1','0.1','0.1','0.1')))
由于最佳排名(例如清酒)是资产2,因此列Rank1将始终获得Asset2返回。 Rank2将获得Asset3的回报,因为它在整个时间内排名第2。这些可能会在现实世界中发生变化,所以会很感激这个帐户。
这是原始答案,谢谢你,但它会混淆Result。不知道它到底在做什么。
Result1 <- returns
Result1[-1] <- returns[-1][cbind(1:nrow(Rank),as.numeric(t(Rank[-1])))]
答案 0 :(得分:0)
我们可以使用 compile 'com.android.support:multidex:1.0.1'
索引。我们row/column
排名&#39;逐行数字(&#39; ri&#39;),将其用作&#39;列&#39;索引,order
带有cbind
索引(row
),从&#39;中提取元素&#39;数据集并将其分配给&#39; Result1&#39;我们之前创建的是为了保持相同的结构。
1:nrow(Rank)