在条件变为假之前,计算数据帧的每一行中的非NA元素的数量

时间:2017-05-26 00:53:35

标签: r

说我有以下数据集:

mydf <- data.frame(serial = c(1:3),
                   A = c(NA,"2011-01-01","2011-02-01"),
                   B = c("2010-12-01","2011-01-01","2011-02-01"),
                   C = c("2010-12-01","2011-01-01",NA)
                    )

还有另一个名为limit

的向量
limit <- c("2011-02-10","2011-03-01","2011-01-12")

将限制视为每行mydf的阈值日期。我希望在阈值日期之前计算每行mydf的非零/非NA次数。 在这种情况下,如果我将结果存储在一个名为occasion的向量中,它将具有以下元素:2,3,2。

注意:每列下的元素显然是YYYY-mm-dd格式的日期。

1 个答案:

答案 0 :(得分:1)

colSum - 由&#34;&lt;&#34;创建的一组逻辑向量:

occasions <- colSums( sapply(mydf[-1], as.Date, format="%Y-%d-%m") < 
                                            as.Date(limit, format="%Y-%d-%m"), 
                     na.rm=TRUE )
occasions
#------
A B C 
2 3 2 

as.Date需要强制执行逻辑比较的逻辑,但如果所有值都是真正的&#39; YYYY-MM-DD&#39;则字符比较应该有用。