我正在尝试创建(在 R 中)在RMark中使用的遭遇历史;即,如果发生了相遇,则返回“1”,如果没有发生,则返回“0”。
样本数据:
zm <- structure(list(date.time = structure(c(1365905306, 1365919237,
1365923863, 1365929487, 1365931725, 1365942003, 1365945361, 1366143204,
1366159355, 1366159863, 1366164285, 1366202496, 1366224357, 1366238428,
1366243685, 1366250254, 1366252570, 1366314236, 1366315282, 1366386242
), class = c("POSIXct", "POSIXt"), tzone = ""), station = c("M1",
"M2", "M2", "M3", "M4", "M3", "M4", "M7", "L1", "M1", "M2", "M2",
"L4", "M2", "M2", "M3", "M4", "M1", "M2", "M1"), code = c(10908,
10908, 10897, 10908, 10908, 10897, 10897, 10908, 10908, 10914,
10914, 10916, 10908, 10917, 10910, 10917, 10917, 10913, 10913,
10896)), .Names = c("date.time", "station", "code"), row.names = c(5349L,
51L, 60L, 7168L, 65L, 7178L, 70L, 6968L, 8647L, 5362L, 79L, 94L,
9027L, 96L, 105L, 7200L, 114L, 5382L, 123L, 5388L), class = "data.frame")
可能的遭遇历史(检查是否发生遭遇的站):
rec<- c("M1", "M2","M3","M4","M5","M6","M7")
重要的是遭遇历史输出是指rec
上面的顺序。
所以对于每个code
我想看看它是否在第一个站被检测到,"M1"
如果是,那么返回一个'1',然后看看它是否在第二个站被检测到"M2"
,如果没有返回一个“0”;这最终将作为 0 和 1 的字符串结束。
我能够通过以下方式获取数据rec
:
library("plyr")
zm2 <- ddply(zm, c("code"), function(df)
data.frame(arrive=(df[which(df$station %in% rec),])))
但是我不确定如何按顺序运行它,rec
然后返回“0”或“1”。
最终我想要一个 data.frame 输出结构如下:
ch code
00101 1
00011 2
等等...