R 将列中的值替换为上一年';s值基于另一列
我想创建一个for循环,根据两列是否匹配,用上一年(同一个月)的值替换行中的值 我已经创建了for循环的结构,但在确定如何使for循环引用上一年的值方面,我还没有取得进展 以下是一个示例数据集: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-
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