如何为for循环从多个数据帧中子集数据

如何为for循环从多个数据帧中子集数据,r,for-loop,R,For Loop,我想计算我拥有的产品列表中的每周价格变化,但我甚至在计算价值时遇到了问题df1是我感兴趣的产品和日期列表,df2是所有产品的价格历史记录。我想在df1中添加一个新列,其价格变化百分比为1周(从df1中的日期算起1周) 数据帧有数千种产品和日期。我尝试使用for loop创建一个新的向量,该向量仅包含df1中当天的价格,但获得替换项的长度为零错误 price <- rep(NA,nrow(df1)) for(i in 1:nrow(df1)){ price[i] <- df2[

我想计算我拥有的产品列表中的每周价格变化,但我甚至在计算价值时遇到了问题
df1
是我感兴趣的产品和日期列表,
df2
是所有产品的价格历史记录。我想在df1中添加一个新列,其价格变化百分比为1周(从df1中的日期算起1周)

数据帧有数千种产品和日期。我尝试使用
for loop
创建一个新的向量,该向量仅包含
df1
中当天的价格,但获得
替换项的长度为零
错误

price <- rep(NA,nrow(df1))
for(i in 1:nrow(df1)){
    price[i] <- df2[which(df2$Date==df1$Date[i]),df1$Item[i]]
  }  

price这种方法可能存在一些问题。第一个问题可能是比较时间。检查两个表中的时间格式是否确实相同,并且它们是否按照预期进行比较

其次,您不考虑返回
NULL
。试试这个修改

for(i in 1:nrow(df1)){
   value <- df2[which(df2$Date==df1$Date[i]), df1$Item[i]]
   if(!is.null(value)) price[i] <- value 
}
for(i in 1:nrow(df1)){
价值
for(i in 1:nrow(df1)){
   value <- df2[which(df2$Date==df1$Date[i]), df1$Item[i]]
   if(!is.null(value)) price[i] <- value 
}