不适合与daply匹配的结果

时间:2014-09-06 17:55:02

标签: r plyr

在将结果与apply进行比较时,我遇到了dapply函数的问题。 这是我的程序,该程序的目标是在我的数据集中找到na的百分比

创建随机数据集的代码:

td <- matrix(rep(rnorm(200,2,6),100),2000,100)
td[sample(1:2000,100),sample(1:100,20)] <- NA
colnames(td) <- paste0("V",1:100)
td <- data.frame(td)

用于查找向量/变量中na值的百分比:

na.pct <- function(v) (sum(is.na(v)*1)*100)/length(v)

使用ddply:

require(plyr)
daply(td,.(colnames(td)),na.pct)

使用基础应用功能:

apply(td,2,na.pct)

当我比较结果时,它们不匹配。我想知道daply函数出了什么问题

请帮我解决这个问题。

由于

1 个答案:

答案 0 :(得分:0)

尝试:

 na.pct1 <- function(v) (sum(is.na(v))*100)/nrow(v)
 na.pct <- function(v) (sum(is.na(v))*100)/length(v)
 res2 <-apply(td,2,na.pct)
 library(reshape2)
 res1 <-  daply(melt(td), .(variable), na.pct1)
 identical(res1,res2)
 #[1] TRUE

您可以检查输出的差异:

 daply(td, .(colnames(td)), function(x) length(x))[1:5] 
 # V1  V10 V100  V11  V12 ##here it is giving the `ncol`
 #100  100  100  100  100 

apply(td, 2, length)[1:5]
#  V1   V2   V3   V4   V5 
#2000 2000 2000 2000 2000