我有一个大型数据集,我试图根据每个观察的数量来删除一些变量。例如,我想删除我的数据框中的任何变量,其中n< 3(该变量的总观测值小于3)。由于R可以使用describe计算每个变量的观察值,因此我不能使用该数字来对数据进行子集,而不是每次我引入新版本时都必须键入每个变量名称(每个版本都有不同的变量,这些变量将具有低n的并且有超过40个变量)。非常感谢你的帮助!
例如,我的数据如下所示:
Target
我希望能够根据他们的n分别为0和1来放弃“激进”和“伤害”。但是,如果有可能告诉R删除ID Runaway Aggressive Emergency Hospitalization Injury
1 3 NA 4 1 NA
2 NA NA 2 1 NA
3 4 NA 6 2 3
4 1 NA 1 1 NA
(或我选择的任何数字)的任何变量,而不是告诉R按变量名删除它们会更方便,因为我将使用此此数据集的多个版本的代码。我已经尝试过使用列号(比编写它们更好)但是当我需要n < 3
数据时,找出哪些变量的n值较低,然后删除28个变量或{{1},这仍然非常繁琐。 } 在他们旁边。
这有效,但很麻烦...
describe()
出于某种原因,我的例子在编辑时与我保存的时候看起来不同,所以我也包含了它的图像。抱歉。这是我第一次使用堆栈溢出来提问。我实际上花了很多时间在Google上搜索,但找不到与n相关的答案。
这一行不起作用:DF [,sapply(DF,函数(col)长度(na.omit(col)))&gt; 4]
答案 0 :(得分:2)
DF
是您的数据框
DF[, sapply(DF, function(col) length(na.omit(col))) > 4]
答案 1 :(得分:0)
这个功能起到了作用:
valid <- function(x) {sum(!is.na(x))}
N <- apply(UIRCorrelation,2,valid)
UIRCorrelation2 <- UIRCorrelation[N > 3]