gpt4 book ai didi

r - 如何计算两个极值之间的值个数?

转载 作者:行者123 更新时间:2023-12-01 09:53:18 25 4
gpt4 key购买 nike

我有一个数据集,我需要计算重新捕获概率。我在想,如果我将捕获 1 的两个事件之间的值为 0(物种未重新捕获)的值相加并将该值除以潜在捕获的数量(1 的所有事件加上 1 之间的所有事件,所以 0)会让我有机会重新夺回。

例如如果我有 1 1 0 1 这将是 1/4 = .25 所以我将有 25% 的机会不重新捕获一个物种。在另一种情况下,如果我有 1 0 0 1,我将有 2/4 即 50% 的机会重新捕获该物种。最后,如果我有 1 1 1 0,这将是 0/3,所以 0% 的物种没有被重新捕获。

有没有办法在这个数据集中自动执行此操作?

structure(list(y.2010 = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), y.2011 = c(1, 
1, 1, 0, 1, 1, 1, 0, 0, 1, 1), y.2012 = c(0, 0, 0, 1, 0, 0, 1,
0, 0, 0, 1), y.2013 = c(0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0), y.2014 = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0), BANDFINAL = c("JP179", "JP197",
"JP209", "JP2340", "JP3118", "JP3120", "JP3162", "JP3164", "JP3165",
"JP3170", "JP3171")), .Names = c("y.2010", "y.2011", "y.2012",
"y.2013", "y.2014", "BANDFINAL"), row.names = c(103L, 113L, 120L,
125L, 140L, 142L, 151L, 153L, 154L, 156L, 157L), class = "data.frame")

打印这个:

    y.2010 y.2011 y.2012 y.2013 y.2014 BANDFINAL
103 1 1 0 0 0 JP179
113 1 1 0 0 0 JP197
120 1 1 0 0 0 JP209
125 1 0 1 0 0 JP2340
140 1 1 0 0 0 JP3118
142 1 1 0 0 0 JP3120
151 1 1 1 1 0 JP3162
153 1 0 0 1 0 JP3164
154 1 0 0 1 0 JP3165
156 1 1 0 0 0 JP3170
157 1 1 1 0 0 JP3171

最后,它应该这样做:

0
0
0
1/3
0
0
0
2/4
2/4
0
0

谢谢,

最佳答案

我猜 @Ben 是对的,但我不熟悉这种知识,而且这个问题看起来很有趣,所以这是我的 base 尝试使用矢量化 max。 colrowSums 函数以计算概率

indx <- max.col(df[-ncol(df)], ties.method = "last")
df$Prob <- (indx - rowSums(df[-ncol(df)])) / indx
df
# y.2010 y.2011 y.2012 y.2013 y.2014 BANDFINAL Prob
# 103 1 1 0 0 0 JP179 0.0000000
# 113 1 1 0 0 0 JP197 0.0000000
# 120 1 1 0 0 0 JP209 0.0000000
# 125 1 0 1 0 0 JP2340 0.3333333
# 140 1 1 0 0 0 JP3118 0.0000000
# 142 1 1 0 0 0 JP3120 0.0000000
# 151 1 1 1 1 0 JP3162 0.0000000
# 153 1 0 0 1 0 JP3164 0.5000000
# 154 1 0 0 1 0 JP3165 0.5000000
# 156 1 1 0 0 0 JP3170 0.0000000
# 157 1 1 1 0 0 JP3171 0.0000000

关于r - 如何计算两个极值之间的值个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33660368/

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