我通过它在数据框(data2017)中的最后一个外观获得了元素的引用值,如下所示:
data2017 <- data.frame(Ticker = c("PETR4","PETR4","VALE5","VALE5","USIM5","USIM5"),
Close = c(14, 15.59, 28.10, 29.07, 8.50, 8.47))
tail(data2017[data2017$Ticker=="PETR4","Close"],1)
对于值为“PETR4”的行,它给了我关闭列的最后价格并且工作得很好 . 但是当我不想自动完成时,在数据框中使用其他代码填充新列的新行,如下所示:
Reference_Prices <- data.frame(Ticker = c("PETR4","VALE5","USIM5"),
Reference = c("NA","NA","NA"))
N <- nrow(Reference_Prices)
Reference_Prices$Ref <- tail(data2017[data2017$Ticker==Reference_Prices$Ticker[1:N],"Close"],1)
它给了我以下错误:
较长的物体长度不是较短物体长度的倍数
谢谢你的帮助
2 回答
它看起来像你只是想为每个
Ticker
获取最后一个值?如果是这样,只需使用tapply
或dplyr::group_by
. 如果没有,请澄清您的预期输出 .tapply解决方案
dplyr :: group_by解决方案
当我输入你的代码时,我没有收到错误 . 看一看:
从我看到的,您将从Ref列中分配data2017数据框中的最后一个股票代码值 .
尝试使用错误消息粘贴控制台的打印输出 . 此外,在调试时将代码分解为更容易消化的代码段 . 看看我在下面做了什么 .