子集列和行?

zx8754

我有以下示例数据(实际数据为150x200),并且需要保持行和列的最佳组合,这样才能使NA最少我可以使用,complete.cases()但是它删除了太多的行。

仅通过查看此示例,显然可以排除x6行,因为它具有最多的NA计数。同样,我们可以排除AF,因为它们的NA计数最多

需要一些逻辑提示,不必是完整的代码解决方案。

#reproducible data
df <- read.csv(text="
SampleID,A,B,C,D,E,F
x1,NA,x,NA,x,NA,x
x2,x,x,NA,x,x,NA
x3,NA,NA,x,x,x,NA
x4,x,x,x,NA,x,x
x5,x,x,x,x,x,x
x6,NA,NA,NA,x,NA,NA
x7,x,x,x,NA,x,x
x8,NA,NA,x,x,x,x
x9,x,x,x,x,x,NA
x10,x,x,x,x,x,x
x11,NA,x,x,x,x,NA")

# complete cases
df[ complete.cases(df),]
#   SampleID A B C D E F
#5        x5 x x x x x x
#10      x10 x x x x x x

附加信息:这是用于风险计算的数据,行是样本,列是变量。每个变量都有一些值的风险因子。例如,风险预测算法(使用不同的定制软件计算)可以使用5个变量或200个变量。变量越多,答案显然越可靠。为了获得可比的结果,大多数样本应具有最多的重叠变量。我将需要保留至少〜60%的样本-行。

A5C1D2H2I1M1N2O1R2T1

这是您可以使用的功能。希望您可以根据自己的需要进行修改:

almostComplete <- function(dataset, rowPct, colPct = rowPct, n = 1) {
  if (sum(is.na(dataset)) == 0) out <- dataset
  else {
    CS <- colSums(is.na(dataset))/ncol(dataset)
    RS <- rowSums(is.na(dataset))/nrow(dataset)
    if (is.null(rowPct)) rowPct <- head(sort(RS, decreasing=TRUE), n)[n]
    if (is.null(colPct)) colPct <- head(sort(CS, decreasing=TRUE), n)[n]

    dropCols <- which(CS >= colPct)
    dropRows <- which(RS >= rowPct)
    out <- dataset[setdiff(sequence(nrow(dataset)), dropRows),
                   setdiff(sequence(ncol(dataset)), dropCols)]
  }
  out
}

一些例子...

删除具有最高NA值百分比的行和列:

almostComplete(df, NULL, NULL)
#    SampleID    B    C    D    E
# 1        x1    x <NA>    x <NA>
# 2        x2    x <NA>    x    x
# 3        x3 <NA>    x    x    x
# 4        x4    x    x <NA>    x
# 5        x5    x    x    x    x
# 7        x7    x    x <NA>    x
# 8        x8 <NA>    x    x    x
# 9        x9    x    x    x    x
# 10      x10    x    x    x    x
# 11      x11    x    x    x    x

删除NA值第二高的行和列。

almostComplete(df, NULL, NULL, n = 2)
#    SampleID    B    C    D E
# 2        x2    x <NA>    x x
# 4        x4    x    x <NA> x
# 5        x5    x    x    x x
# 7        x7    x    x <NA> x
# 8        x8 <NA>    x    x x
# 9        x9    x    x    x x
# 10      x10    x    x    x x
# 11      x11    x    x    x x

为行和列设置一个阈值。

almostComplete(df, .7)
#    SampleID    B    C    D    E
# 1        x1    x <NA>    x <NA>
# 2        x2    x <NA>    x    x
# 3        x3 <NA>    x    x    x
# 4        x4    x    x <NA>    x
# 5        x5    x    x    x    x
# 6        x6 <NA> <NA>    x <NA>
# 7        x7    x    x <NA>    x
# 8        x8 <NA>    x    x    x
# 9        x9    x    x    x    x
# 10      x10    x    x    x    x
# 11      x11    x    x    x    x

分别指定行和列阈值。

almostComplete(df, .2, .5)
#    SampleID    B    C    D E
# 2        x2    x <NA>    x x
# 4        x4    x    x <NA> x
# 5        x5    x    x    x x
# 7        x7    x    x <NA> x
# 8        x8 <NA>    x    x x
# 9        x9    x    x    x x
# 10      x10    x    x    x x
# 11      x11    x    x    x x

不知道确切地将如何使用它,我不确定这是否有用...。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于列和行的子集

来自分类Dev

基于列值的熊猫子集和放置行

来自分类Dev

R //基于名称的子集矩阵行和列

来自分类Dev

通过联接分配data.table行和列的子集

来自分类Dev

对于行和列的某些子集,如何将列转换为行?

来自分类Dev

基于行总和的子集列

来自分类Dev

子集匹配列但保留行

来自分类Dev

按行遍历列的子集

来自分类Dev

R:行和列标签上的数据框的子集的平均值

来自分类Dev

基于单元格值和不满足条件的下拉行/列的子集矩阵

来自分类Dev

使用R中的命名向量按列和行对表进行子集

来自分类Dev

如何在一行代码中对R中的列进行子集和求和

来自分类Dev

R:行和列标签上的数据框的子集的平均值

来自分类Dev

R个子集元素,如果每个元素指定列和行

来自分类Dev

Pandas 数据框选择中的列和行顺序/索引到数据子集中

来自分类Dev

如何对保留总和大于 0 的列和行的矩阵进行子集化?

来自分类Dev

Pandas:根据包含特定值的列子集选择行和列

来自分类Dev

每个子集的子集列和计算操作

来自分类Dev

R-仅对行的子集变异列的子集

来自分类Dev

基于数字的子集和折叠行

来自分类Dev

SPSS:从矩阵中选择列或行的子集

来自分类Dev

子集1列矩阵删除行名

来自分类Dev

如何创建基于行子集递增的列?

来自分类Dev

根据行值对列进行子集

来自分类Dev

熊猫从其他多个列和行的子集中计算出一个新列

来自分类Dev

R:如何仅针对行子集和条件向现有数据帧添加新列

来自分类Dev

对数据框中的行的子集进行联接和求和

来自分类Dev

r按条件和因子组的子集行

来自分类Dev

值和后续行的子集df-熊猫

Related 相关文章

热门标签

归档