r - 如果在 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))
虽然这只会增加语句为假的值,而不是下一行。
提前致谢。
解决方案
我们可以使用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))
推荐阅读
- java - Spring-Cache CacheManager 上的 SPI 是什么意思
- php - 从同一表单上传和重命名多个文件的问题
- google-apps-script - 取消选中 Google 表格中的复选框
- python - pyqtdeploy-sysroot:无法检测到 MSVC2015 或 MSVC2017
- mysql - MySQL选择具有每个不同值的随机行 - 逗号分隔输入
- asp.net-mvc - 无法使用 .net framework 4.5 安装 dapper 2.0.30
- c# - Azure 反序列化 JSON 响应 C#
- php - Yii2 命令控制器功能未在 docker 容器的 crontab 中执行
- dependency-injection - 带有任务调度的NestJs依赖注入不起作用
- networking - 如何在本地网络上传输至少“几个字节”(UEFI DXE)