1

我正在完善我的数据框以消除无用的变量。我做的第一步是使用以下命令删除具有超过一半行作为 NA 值的列:

limit <- nrow(mydata)/2
mydata <- mydata[, which(as.numeric(colSums(!is.na(mydata))) > limit)] 

我期待为零做同样的事情,但我找不到像“is.zero()”这样的函数,我该怎么做?

我期待做的另一件事是删除任何重复任何值超过“限制”次数的列(如果存在这样的命令,那将是理想的!)

非常感谢,

4

2 回答 2

5

做就是了:

mydata <- mydata[, which(as.numeric(colSums(mydata != 0)) > limit)] 

至于删除重复任何值超过“限制”次数的列,您可以使用tableanyapply

mydata <- mydata[, which(apply(mydata, 2, function(col) !any(table(col) > limit)))] 

最后,请注意这两种情况which都是可选的,而as.numeric在您的第一种情况下是不必要的。你可以简单地做:

mydata <- mydata[, colSums(mydata != 0) > limit] 
于 2013-03-08T15:26:25.430 回答
2

要查找非零,只需替换!is.na(mydata)mydata != 0.

要获得最频繁元素的计数,您可以使用:

> mydata <- c(1,2,3,4,1,1,1,2,1,3)
> sort(table(mydata), decreasing=T)[[1]]
[1] 5

要查看重复次数最多的实际值:

> names(sort(table(mydata), decreasing=T)[1])
[1] "1"

如果您不关心保留该值,则可以使用max()代替sort()

> max(table(mydata))
[1] 5
于 2013-03-08T15:26:30.067 回答