Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将列中的值替换为上一年';s值基于另一列_R_Date_For Loop_If Statement - Fatal编程技术网

R 将列中的值替换为上一年';s值基于另一列

R 将列中的值替换为上一年';s值基于另一列,r,date,for-loop,if-statement,R,Date,For Loop,If Statement,我想创建一个for循环,根据两列是否匹配,用上一年(同一个月)的值替换行中的值 我已经创建了for循环的结构,但在确定如何使for循环引用上一年的值方面,我还没有取得进展 以下是一个示例数据集: fish <- c("A","A","B","B","C","C") fish_wt<-c(2,3,4,5,5,7) fish_count<-c(2,200,47,78,5,845) date <- as.Date(c('2010-11-1','2009-11-1','2009-

我想创建一个for循环,根据两列是否匹配,用上一年(同一个月)的值替换行中的值

我已经创建了for循环的结构,但在确定如何使for循环引用上一年的值方面,我还没有取得进展

以下是一个示例数据集:

fish <- c("A","A","B","B","C","C")
fish_wt<-c(2,3,4,5,5,7)
fish_count<-c(2,200,47,78,5,845)
date <- as.Date(c('2010-11-1','2009-11-1','2009-11-1','2008-11-1','2008-2-1','2007-2-1'))

data <- data.frame(fish,fish_wt,fish_count,date)
data$newcount<-0

我曾想过用鱼来分隔行,然后使用row-1解决方案。我只是想知道是否有更简单的方法。

作为这个问题的解决方案,我建立了一个以鱼、年和月为单位的平均温度表(长格式),然后合并数据集,并使用fish_wt==fish_count的任何行的平均值。

这是哪种编程语言?请相应地标记您的问题。这是你吸引那些懂这种语言的人注意的最好机会。
for  (i in 1:nrow(data)) {
  if (data$fish_wt[i] == data$fish_count[i]) {
    data$newcount[i] <- 10
  } else {
    data$newcount[i] <- data$fish_count[i]
  }
}
for  (i in 1:nrow(data)) {
  if (data$fish_wt[i] == data$fish_count[i]) {
    data$newcount[i] <- data$newcount[data$date==data$date[i-1])]
 } else {
    data$newcount[i] <- data$fish_count[i]
  }
}
      fish    fish_wt  fish_count  date  newcount

1      A          2        2    2010-11-01  200
2      A          3        200  2009-11-01  200
3      B          4        47   2009-11-01  47
4      B          5        78   2008-11-01  78
5      C          5        5    2008-02-01  845
6      C          7        845  2007-02-01  845