R 如何选择缺少某些模式的行?

R 如何选择缺少某些模式的行?,r,missing-data,r-mice,R,Missing Data,R Mice,因此,我有一个数据集,其中包含许多缺少的值。我想分离不同缺失模式的数据。我找到了“mice”包,它非常方便地总结缺失的值模式。然而,当我想要选择具有某种缺失模式的行时,所选行的数量远远少于缺失模式矩阵所建议的计数 我的代码如下 要获取缺少的模式,请执行以下操作: library(mice) # md.pattern returns a matrix, I convert the matrix into a data frame with the first column as its frequ

因此,我有一个数据集,其中包含许多缺少的值。我想分离不同缺失模式的数据。我找到了“mice”包,它非常方便地总结缺失的值模式。然而,当我想要选择具有某种缺失模式的行时,所选行的数量远远少于缺失模式矩阵所建议的计数

我的代码如下

要获取缺少的模式,请执行以下操作:

library(mice)
# md.pattern returns a matrix, I convert the matrix into a data frame with the first column as its frequency in the data frame 
pattern = md.pattern(data)
freq = dimnames(pattern)[[1]][-nrow(pattern)] 
pattern = data.frame(pattern[1:nrow(pattern)-1, 1:ncol(pattern)-1], row.names = NULL)
pattern$freq = freq
pattern = pattern[order(freq,decreasing = TRUE),]
但是,当我试图通过
模式中的特定模式手动计算缺少的模式时。数量要小得多

count = 0
for (i in 1:nrow(data)){
    # match the missingness by the entire row
    if (all(!is.na(data[i, names(data)[1:ncol(pattern)-1]]) == test[1,1:ncol(pattern)-1])){
        count = count +1
  }
}
有人知道哪里出了问题吗? 谢谢

数据有很多变量(总共107个)和70000多个观察值。此代码在
鼠标
包中的样本数据
nhanes
中运行良好。但我的数据文件中出现了错误

例如:

V1 V2 V3 V4 V5
1  NA  3  5  2
NA  3 23  2  9
NA  3 90  7  5
3   3  2 34 NA
3  NA  2  1  3
4  NA  7  3  1
无论如何,我检查了
mices
包中的
md.pattern
。它基于Schafer的prelim.norm函数,而不是逐行检查缺失值模式

我发现
plyr
包中的
count
确实起到了作用。我编写这个函数是为了返回数据集中缺失的模式
x
是数据帧。对我来说效果很好

library(plyr)
miss.pattern <- function(x, topn) {
  # find missingness patterns, 1 represents missing
  r <- 1 * data.frame(is.na(x))
  pattern <- data.frame(count(r))
  pattern <- pattern[order(-pattern$freq),]
  return(pattern[1:topn,])
}
库(plyr)
miss.pattern无论如何,我检查了
mices
包中的
md.pattern
。它基于Schafer的prelim.norm函数,而不是逐行检查缺失值模式

我发现
plyr
包中的
count
确实起到了作用。我编写这个函数是为了返回数据集中缺失的模式
x
是数据帧。对我来说效果很好

library(plyr)
miss.pattern <- function(x, topn) {
  # find missingness patterns, 1 represents missing
  r <- 1 * data.frame(is.na(x))
  pattern <- data.frame(count(r))
  pattern <- pattern[order(-pattern$freq),]
  return(pattern[1:topn,])
}
库(plyr)
miss.pattern无论如何,我检查了
mices
包中的
md.pattern
。它基于Schafer的prelim.norm函数,而不是逐行检查缺失值模式

我发现
plyr
包中的
count
确实起到了作用。我编写这个函数是为了返回数据集中缺失的模式
x
是数据帧。对我来说效果很好

library(plyr)
miss.pattern <- function(x, topn) {
  # find missingness patterns, 1 represents missing
  r <- 1 * data.frame(is.na(x))
  pattern <- data.frame(count(r))
  pattern <- pattern[order(-pattern$freq),]
  return(pattern[1:topn,])
}
库(plyr)
miss.pattern无论如何,我检查了
mices
包中的
md.pattern
。它基于Schafer的prelim.norm函数,而不是逐行检查缺失值模式

我发现
plyr
包中的
count
确实起到了作用。我编写这个函数是为了返回数据集中缺失的模式
x
是数据帧。对我来说效果很好

library(plyr)
miss.pattern <- function(x, topn) {
  # find missingness patterns, 1 represents missing
  r <- 1 * data.frame(is.na(x))
  pattern <- data.frame(count(r))
  pattern <- pattern[order(-pattern$freq),]
  return(pattern[1:topn,])
}
库(plyr)

pattern小姐,您必须提供一些样本数据供我们使用,这些数据代表您的真实数据。“目前,我们没有任何建议作为依据。@最近的一封邮件我上传了一个数据文件的样本。谢谢“提供一些样本数据”并不意味着“给我们一个指向未知来源文件的链接,以便我们可以点击它,查看它的格式,推断问题所在,等等”。请将问题简化为一个小数据集,并将其直接添加到此问题中。(这也有助于在您提供的链接过时时从这个问题中受益的人。)。。。通过“添加到这个问题”中,我建议一些类似于<代码> DPT(MyVaR)或代码来实际创建数据(例如,调用<代码>数据。框架< /代码>)。请考虑阅读以下内容:在R中,您必须提供一些示例数据供我们玩,这代表了您的真实数据。“目前,我们没有任何建议作为依据。@最近的一封邮件我上传了一个数据文件的样本。谢谢“提供一些样本数据”并不意味着“给我们一个指向未知来源文件的链接,以便我们可以点击它,查看它的格式,推断问题所在,等等”。请将问题简化为一个小数据集,并将其直接添加到此问题中。(这也有助于在您提供的链接过时时从这个问题中受益的人。)。。。通过“添加到这个问题”中,我建议一些类似于<代码> DPT(MyVaR)或代码来实际创建数据(例如,调用<代码>数据。框架< /代码>)。请考虑阅读以下内容:在R中,您必须提供一些示例数据供我们玩,这代表了您的真实数据。“目前,我们没有任何建议作为依据。@最近的一封邮件我上传了一个数据文件的样本。谢谢“提供一些样本数据”并不意味着“给我们一个指向未知来源文件的链接,以便我们可以点击它,查看它的格式,推断问题所在,等等”。请将问题简化为一个小数据集,并将其直接添加到此问题中。(这也有助于在您提供的链接过时时从这个问题中受益的人。)。。。通过“添加到这个问题”中,我建议一些类似于<代码> DPT(MyVaR)或代码来实际创建数据(例如,调用<代码>数据。框架< /代码>)。请考虑阅读以下内容:在R中,您必须提供一些示例数据供我们玩,这代表了您的真实数据。“目前,我们没有任何建议作为依据。@最近的一封邮件我上传了一个数据文件的样本。谢谢“提供一些样本数据”并不意味着“给我们一个指向未知来源文件的链接,以便我们可以点击它,查看它的格式,推断问题所在,等等”。请将问题简化为一个小数据集,并将其直接添加到此问题中。(这也有助于在您提供的链接过时时从这个问题中受益的人。)。。。通过“添加到这个问题”中,我建议像“代码> DPT(MyVar)< /COD>或代码使用来实际创建数据(例如,调用<代码>数据。框架< /代码>)。请考虑阅读以下内容:R。