1

我有一个大型数据集,我试图根据每个变量有多少观察来删除我的一些变量。例如,我想在我的数据框中删除 n < 3 的任何变量(该变量的总观察值小于 3)。由于 R 可以使用 describe 计算每个变量的观察值,我不能使用该数字来对数据进行子集化,而不是每次我拉入新版本时都必须输入每个变量名称(每个版本都有不同的变量,这些变量的 n 值较低并且有超过40个变量)。非常感谢你的帮助!

例如,我的数据如下所示:

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

我希望能够根据它们的 n 分别为 0 和 1 来放弃“激进”和“伤害”。但是,与其告诉 R 用变量名删除它们,不如告诉 R 将任何变量放在哪里n < 3(或我选择的任何数字)会更方便,因为我将在多个版本中使用此代码这个数据集。我尝试过使用列号(这比写出来要好),但是当我必须处理describe()数据时,找出哪些变量的 n 值较低,然后删除 28 个变量或subset()围绕它们,这仍然很乏味。这可行,但它很麻烦......

UIRCorrelation <- UIRKidUnique61[c(28, 30, 32, 34:38, 42, 54:74)] 

出于某种原因,我的示例在编辑和保存时看起来不同,因此我还包含了它的图像。对不起。这是我第一次使用堆栈溢出来提问。实际上,我花了很多时间在谷歌上搜索,但找不到与 n 相关的答案。

此行无效:DF[, sapply(DF, function(col) length(na.omit(col))) > 4]

4

2 回答 2

2

DF成为你的数据框

DF[, sapply(DF, function(col) length(na.omit(col))) > 4]
于 2018-06-14T07:26:48.017 回答
0

这个函数成功了:

valid <- function(x) {sum(!is.na(x))}

N <- apply(UIRCorrelation,2,valid) 

UIRCorrelation2 <- UIRCorrelation[N > 3]
于 2018-06-15T02:31:46.320 回答