我正在完善我的数据框以消除无用的变量。我做的第一步是使用以下命令删除具有超过一半行作为 NA 值的列:
limit <- nrow(mydata)/2
mydata <- mydata[, which(as.numeric(colSums(!is.na(mydata))) > limit)]
我期待为零做同样的事情,但我找不到像“is.zero()”这样的函数,我该怎么做?
我期待做的另一件事是删除任何重复任何值超过“限制”次数的列(如果存在这样的命令,那将是理想的!)
非常感谢,
我正在完善我的数据框以消除无用的变量。我做的第一步是使用以下命令删除具有超过一半行作为 NA 值的列:
limit <- nrow(mydata)/2
mydata <- mydata[, which(as.numeric(colSums(!is.na(mydata))) > limit)]
我期待为零做同样的事情,但我找不到像“is.zero()”这样的函数,我该怎么做?
我期待做的另一件事是删除任何重复任何值超过“限制”次数的列(如果存在这样的命令,那将是理想的!)
非常感谢,
做就是了:
mydata <- mydata[, which(as.numeric(colSums(mydata != 0)) > limit)]
至于删除重复任何值超过“限制”次数的列,您可以使用table、any和apply:
mydata <- mydata[, which(apply(mydata, 2, function(col) !any(table(col) > limit)))]
最后,请注意这两种情况which都是可选的,而as.numeric在您的第一种情况下是不必要的。你可以简单地做:
mydata <- mydata[, colSums(mydata != 0) > limit]
要查找非零,只需替换!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