我试图从耗尽/清除研究中获取(动物的)计数数据,并将其转换为二进制捕获历史记录,以便在Program MARK中使用。
数据具有每行(即c1,c2,...)和多个协变量(即cov1,cov2,......)的多个计数结构。某些计数包含缺失值。
我要做的是给每个动物自己的"捕捉历史"由1&0和0组成。因此,最终数据帧中的行数应等于所有行的计数总和。我遇到的麻烦是如何在保留缺失值(即,NA)的同时复制行。如果一行只包含零或NA,则可以忽略它。但是如果一个非零计数的行中有NA,我想在最终的捕获历史中保留这些NA。
我使用dput生成以下示例矩阵:
structure(c(3, 2, 1, 0, 0, 2, NA, 0, 0, NA, 1, NA, NA, 0, NA,
1997, 1997, 1998, 1999, 1999), .Dim = c(5L, 4L), .Dimnames = list(
NULL, c("c1", "c2", "c3", "cov")))
该代码应该产生以下内容:
# Original count data
######################
# c1 c2 c3 cov #
# [1,] 3 2 1 1997 #
# [2,] 2 NA NA 1997 #
# [3,] 1 0 NA 1998 #
# [4,] 0 0 0 1999 #
# [5,] 0 NA NA 1999 #
######################
这就是我想要MARK输入的样子。请注意,我不需要保留原始矩阵的最后一行,因为没有观察到任何人:
# Desired binary data
####################
# 1 0 0 1997 # # Where the first 3 rows represent the count in [1,1]
# 1 0 0 1997 #
# 1 0 0 1997 #
# 0 1 0 1997 # # These next two represent the count in [1,2]
# 0 1 0 1997 #
# 0 0 1 1997 # # This is [1,3]
# 1 NA NA 1997 # # These are [2,1]
# 1 NA NA 1997 #
# 1 0 NA 1998 # # And the last is [3,1]
####################
另一种可能的输入格式是将计数放在单独的列中。此和以上输入包含相同的信息:
# Desired binary data
####################
# 1 0 0 1997 3 # # Where the first row represents the count in [1,1]
# 0 1 0 1997 2 # # These next represents the count in [1,2]
# 0 0 1 1997 1 # # This is [1,3]
# 1 NA NA 1997 2 # # This is [2,1]
# 1 0 NA 1998 1 # # And the last is [3,1]
####################