【发布时间】:2020-03-20 08:23:06
【问题描述】:
我有一个名为 productCheck 的数据框:
prod <- c("GAS","GAS","GLP","GLP","GNV")
monthYear <- c("2016-06-01","2016-07-01","2016-06-01","2016-07-01","2016-07-01")
meanValue <- c(3,5,8,1,6)
price <- c(0,0,0,0,0)
productCheck <- data.frame(prod,monthYear,meanValue,price)
productCheck$prod <- as.factor(productCheck$prod)
productCheck$monthYear <- as.factor(productCheck$monthYear)
当我执行以下循环时,我得到一个错误:
for (j in levels(productCheck$prod))
{
firstPeriod <- NA
for (k in levels(productCheck$monthYear))
{
if (!is.na(firstPeriod))
{
secondPeriod <- k
productCheck[productCheck$monthYear==j & productCheck$prod==secondPeriod,]$price <-
100*(productCheck[productCheck$monthYear==secondPeriod & productCheck$prod==j,]$meanValue -
productCheck[productCheck$monthYear==firstPeriod & productCheck$prod==j ,]$meanValue) /
productCheck[productCheck$monthYear==firstPeriod & productCheck$prod==j ,]$meanValue
}
firstPeriod <- k
}
}
$<-.data.frame(*tmp*, "price", value = numeric(0)) 中的错误:替换有 0 行,数据有 1
问题是 GNV 产品没有“2016-06-01”期间的信息。如何避免此错误?
【问题讨论】:
-
您介意解释一下您要做什么以及给定数据的预期输出吗?
-
嗨,Ronak Shah,王志强的代码完全回答了我的问题。谢谢。
标签: r loops dataframe indexoutofboundsexception