编写一个 for 循环以将每 3 次扫描计为 1 次扫描
Writing a for loop to count every 3 scans as 1 scan
我的数据集在扫描中有几个 sightings/data 点,每个目击点都按当前扫描编号列出。我希望能够编写一个代码,将扫描 1、2、3 计为扫描 1,将扫描 4、5、6 计为扫描 2,依此类推。
这是我到目前为止的结果,包括我尝试的结果 Sample dataset。
一个小数据框示例:
whales <- data.frame(rubbing.beach = c(away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach),
scan.no.1 = c(1, 1, 2, 2, 3, 3, 4, 4, 5, 6))
我想将 scan.no.1 列设为 scan.no 列。我使用下面的代码生成 scan.no 列,但这不是我想要的结果。
使用上面的 scan.no.1,我想要一个具有以下结果的 scan.no 列:
scan.no = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2).
scan.no=rep(NA, nrow(whales));
scan.no[1:3]=1;
for (i in 3:(nrow(whales)-1)) {
scan.no[i+1] = ifelse(whales$scan.no.1[i+1] != whales$scan.no.1[i],
scan.no[i]+1, scan.no[i])
}
这个怎么样
scans <- 1:21
scan_no <- ceiling(scans/3)
scan_no
# [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7
你可以使用cut
-
scan.no.1 = c(1, 1, 2, 2, 3, 3, 4, 4, 5, 6)
cut(scan.no.1, seq(0, max(scan.no.1), 3), labels = FALSE)
#[1] 1 1 1 1 1 1 2 2 2 2
我的数据集在扫描中有几个 sightings/data 点,每个目击点都按当前扫描编号列出。我希望能够编写一个代码,将扫描 1、2、3 计为扫描 1,将扫描 4、5、6 计为扫描 2,依此类推。
这是我到目前为止的结果,包括我尝试的结果 Sample dataset。
一个小数据框示例:
whales <- data.frame(rubbing.beach = c(away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach, away.from.beach),
scan.no.1 = c(1, 1, 2, 2, 3, 3, 4, 4, 5, 6))
我想将 scan.no.1 列设为 scan.no 列。我使用下面的代码生成 scan.no 列,但这不是我想要的结果。
使用上面的 scan.no.1,我想要一个具有以下结果的 scan.no 列:
scan.no = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2).
scan.no=rep(NA, nrow(whales));
scan.no[1:3]=1;
for (i in 3:(nrow(whales)-1)) {
scan.no[i+1] = ifelse(whales$scan.no.1[i+1] != whales$scan.no.1[i],
scan.no[i]+1, scan.no[i])
}
这个怎么样
scans <- 1:21
scan_no <- ceiling(scans/3)
scan_no
# [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7
你可以使用cut
-
scan.no.1 = c(1, 1, 2, 2, 3, 3, 4, 4, 5, 6)
cut(scan.no.1, seq(0, max(scan.no.1), 3), labels = FALSE)
#[1] 1 1 1 1 1 1 2 2 2 2