首页 > 解决方案 > 如果在 R 中不满足条件时为每行增加变量的语句

问题描述

我想请教一些建议。我有一个 .csv 文件,我用它来计算两次目击之间的时间差(经过)。我想将低于 30 的每一次目击(已过去)标记为访问次数 1,但一旦条件为假(高于 30),就必须将访问次数永久增加到两次......

数据表如下:

Species Elapsed VisitNo aardvark 5 aardvark 10 aardvark 2 aardvark 30 aardvark 4 aardvark 30 aardvark 10

我想要的是这样的:

Species Elapsed VisitNo aardvark 5 1 aardvark 10 1 aardvark 2 1 aardvark 30 2 aardvark 4 2 aardvark 30 3 aardvark 10 3

TempVisit <- 1 VisitNo = TempVisit <- ifelse(Elapsed < 30 ,1,TempVisit + 1))

虽然这只会增加语句为假的值,而不是下一行。

提前致谢。

标签: rif-statement

解决方案


我们可以使用cumsum.

df$VistiNo <- cumsum(df$Elapsed >= 30) + 1
df
#   Species Elapsed VistiNo
#1 aardvark       5       1
#2 aardvark      10       1
#3 aardvark       2       1
#4 aardvark      30       2
#5 aardvark       4       2
#6 aardvark      30       3
#7 aardvark      10       3

数据

df <- structure(list(Species = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L), .Label = "aardvark", class = "factor"), Elapsed = c(5L, 
10L, 2L, 30L, 4L, 30L, 10L)), class = "data.frame", row.names = c(NA, -7L))

推荐阅读