我想知道如何在一个数据框中省略NA个值,但只在我感兴趣的一些列中.

例如

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))

但我只想省略yNA的数据,因此结果应该是

  x  y  z
1 1  0 NA
2 2 10 33

na.omit似乎删除所有包含NA的行.

有人能帮我解决这个简单的问题吗?

但如果现在我把问题改成:

DF <- data.frame(x = c(1, 2, 3,NA), y = c(1,0, 10, NA), z=c(43,NA, 33, NA))

如果我只想省略x=naz=na,我可以把|放在哪里?

推荐答案

您可以使用complete.cases函数并将其放入一个函数:

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))

completeFun <- function(data, desiredCols) {
  completeVec <- complete.cases(data[, desiredCols])
  return(data[completeVec, ])
}

completeFun(DF, "y")
#   x  y  z
# 1 1  0 NA
# 2 2 10 33

completeFun(DF, c("y", "z"))
#   x  y  z
# 2 2 10 33

EDIT: Only return rows with no 100s

如果要消除任何列中至少有一个NA的所有行,只需直接使用complete.cases函数:

DF[complete.cases(DF), ]
#   x  y  z
# 2 2 10 33

或者如果completeFun已经在您的工作流程中根深蒂固;)

completeFun(DF, names(DF))

R相关问答推荐

使用map()内的公式()创建多个公式

了解.groups的目的= dØr的摘要功能中的删除

self_函数无法工作--无法子集结束后的列

geom_raster不适用于x比例中超过2,15的值

跨列应用多个摘要函数:summerise_all:列表对象无法强制为double类型'

使用ggcorrplot在相关性矩阵上标注supertitle和index标签

如何删除R中除某些特定名称外的所有字符串?

如何根据组大小应用条件过滤?

如何利用模型函数在格图中添加双曲/指数曲线

如何在ggplot中标记qqplot上的点?

我如何才能找到FAMILY=POISSON(LINK=&Q;LOG&Q;)中的模型预测指定值的日期?

合并DFS列表并将索引提取为新列

计算满足R中条件的连续列

`lazy_dt`不支持`dplyr/across`?

您是否可以将组添加到堆叠的柱状图

汇总数据帧中的复制列,保持行的唯一性

来自程序包AFEX和amp;的类/函数和NICE_TABLE&冲突

我如何使用tidyselect来传递一个符号数组,比如Pivot_Long?

删除在R中的write.table()函数期间创建的附加行

R:如何在数据集中使用Apply