将计数数据转换为二进制“捕获历史记录”,同时保留NA和协变量

时间:2014-03-14 17:26:37

标签: r

我试图从耗尽/清除研究中获取(动物的)计数数据,并将其转换为二进制捕获历史记录,以便在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]
####################  

0 个答案:

没有答案