【发布时间】:2021-07-16 03:35:37
【问题描述】:
如果满足某些条件,我想从下一行的变量中减去一个变量。 考虑以下数据框:
time <- c(12, 14, 16, 10, NA, 18)
type <- c("morning", "noon", "evening", "morning", "noon", "evening")
data <- data.frame(time, type)
由于我的数据中有 4000 行,因此我需要一个包含两个变化值的循环(用于感兴趣的两行)。我还没有尝试实现循环,因为我很难在列中选择特定的行和特定的值。 (但我非常感谢有关如何包含循环的建议!) 到目前为止,代码如下所示:
if(data[which(data[row1, "type"] =="morning")] & data[which(data[row2, "type"] == "noon")]) | data[which(data[row1, "type"] =="noon")] & data[which(data[row2, "type"] == "evening")]) {
data[row2, "difference"] <- data[row2, "time"] - data[row1, "time"]
} else{
data[row2, “difference"] <- NA
}
所以我想从row2中的时间减去row1中的时间值,并将结果存储在row2中的变量“difference”中。但是,只有满足两个条件之一时,才应减去这些值。
【问题讨论】:
-
您的示例数据不起作用。您错过了向量开头的
c,并且您有智能引号。同样cbind将创建一个矩阵而不是data.frame。试试time <- c(12, 14, 16, 10, NA, 18)和type <- c("morning", "noon", "evening", "morning", "noon", "evening")和data <- data.frame(time, type)
标签: r loops if-statement conditional-statements