r - 选择具有不同 rowSums 条件的行
问题描述
我正在尝试从 df 中选择创建一个新的 df 'Z',其中对于第 9、10、11、1、2、4、5 列,NA 少于 3,对于第 3、6、7 列, 8,12,13,14 正好有 7 个 NA。我正在使用此代码
Z <- df[c(rowSums(is.na(df[, c(9:11,1,2,4,5)]) < 3)) & (rowSums(is.na(df[, c(6:8,12:14,3)]) == 7)),]
但是,作为输出,我得到一个只有 14 个列名的空 df。我究竟做错了什么?
解决方案
你只是在错误的地方放了一些牙套
df[rowSums(is.na(df[, c(9:11,1,2,4,5)])) < 3 & rowSums(is.na(df[, c(6:8,12:14,3)])) == 7,]
为了帮助您在调试时让您的代码更清晰,请尝试通过缩进或间隔代码跨行分布 - 这就是我写的
df[
rowSums( is.na( df[, c(9:11, 1, 2, 4, 5)] ) ) < 3 &
rowSums( is.na( df[, c(6:8, 12:14, 3)] ) ) == 7, ]
与您的相比,间距有助于显示错误
df[
c(
rowSums( is.na( df[, c(9:11, 1, 2, 4, 5)] ) < 3 ) ) &
(rowSums( is.na( df[, c(6:8, 12:14, 3)] ) == 7 ) ), ]
测试使用
df <- data.frame(NA,2,NA,4,5,NA,NA,NA,9,10,11,NA,NA,NA)
推荐阅读
- markdown - 从 Markdown 转换为 Word 时更改字体系列和大小?
- javascript - 如何从 chrome 扩展中删除特定的 cookie?
- javascript - 分配返回函数
- java - 查询公共方法验证失败,spring jpa?
- discord.py - 如何检查是否有人在 dblpy 中为我的不和谐机器人投票?
- c++ - 从 C++ 中的函数返回 double 的问题
- javascript - 如何从 Onsen Checkbox 单击按钮时获取多个复选框值?
- java - 使用 java 链接 XML 和 XSD
- gcc - 是否可以在 Conda 环境中使用不同的 gcc 版本?
- node.js - ejs@3.1.3 postinstall: `node --harmony ./postinstall.js 退出状态1