gpt4 book ai didi

r - 计算标记重捕获模型的遭遇历史

转载 作者:行者123 更新时间:2023-12-04 11:33:59 26 4
gpt4 key购买 nike

我正在尝试创建(在 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

等等……

最佳答案

table() 确实是要走的路,然后是 paste0() 将表格折叠成一个字符串。 (感谢您提供可重现的示例!)

rec <- sort(unique(zm$station))
cfun <- function(x) {
tab <- with(x,table(factor(station,levels=rec)))
data.frame(ch=paste0(as.numeric(tab),collapse=""))
}
library(plyr)
ddply(zm,"code",cfun)
## code ch
## 1 10896 0010000
## 2 10897 0001110
## 3 10908 1111111
## 4 10910 0001000
## 5 10913 0011000
## 6 10914 0011000
## 7 10916 0001000
## 8 10917 0001110

或者按照@alexis_laz 的建议:

tab2 <- with(zm,table(code,station))
ctab <- apply(tab2,1,paste0,collapse="")
data.frame(code=names(ctab),ch=ctab)

(代码列出了两次,一次作为行名,一次作为列)。后一个版本可能会快一点,以防你有一个非常大的数据集或需要这样做数千次......

关于r - 计算标记重捕获模型的遭遇历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19658637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com