基于列子集修剪 NA - 更优雅的解决方案?

2024-01-11

stackoverflow 社区的新年难题,通过阅读过去的帖子和答案很有帮助(这是我的第一个问题)。我找到了解决方法,但我想知道是否可以建议其他方法/解决方案。

我正在尝试从大型文件中删除尾随的 NAdata.frame,但这些 NA 只出现在data.frame我想保留输出中的所有列。这是一个代表性的数据子集。

df=data.frame(var1=rep("A", 8), var2=c("a","b","c","d","e","f","g","h"), var3=c(0,1,NA,2,3,NA,NA,NA), var4=c(0,0,NA,4,5,NA,NA,NA), var5=c(0,0,NA,0,2,4,NA,NA))

该过程的目标:

  1. 根据 var3、var4 和 var5 中存在的 NA 修剪尾随 NA
  2. 保留最终输出中的所有列
  3. 仅删除尾随的 NA(即第 3 行作为占位符保留在记录中)
  4. 仅当所有列都有 NA 时才进行修剪(即第 7 行和第 8 行,但不是第 6 行)

基于这些目标,解决方案应删除 df 的最后两行:

df.output = df[-c(7,8),]

na.trim(在 Zoo 包中)的行为是理想的(因为它限制删除 data.frame 末尾的那些 NA,side="right"),我的解决方法包括更改 na.trim .default 函数包含子集项。

有什么建议么?非常感谢您的帮助。

编辑:为了完成这个问题,下面是我从 na.trim.default 代码创建的函数,它也可以工作,但如上所述,确实需要加载动物园包。

na.trim.multiplecols <-  function (object, colrange, sides = c("both", "left", "right"),     is.na = c("any","all"),...) 
{
is.na <- match.arg(is.na)
nisna <- if (is.na == "any" || length(dim(object[,colrange])) < 1) {
complete.cases(object[,colrange])
}
else rowSums(!is.na(object[,colrange])) > 0
idx <- switch(match.arg(sides), left = cumsum(nisna) > 0, 
            right = rev(cumsum(rev(nisna) > 0) > 0), both = (cumsum(nisna) > 
                                                               0) &       rev(cumsum(rev(nisna)) > 0))
if (length(dim(object)) < 2) 
object[idx]
else object[idx, , drop = FALSE]

}

一些基于max(which(!is.na()))将工作。我们用它来查找感兴趣的列中非缺失数据的最大索引。

使用你的 df

ind <-  max(max(which(!is.na(df$var3))),
        max(which(!is.na(df$var4))),        
        max(which(!is.na(df$var5)))) 

df[1:ind, ]

   var1 var2 var3 var4 var5
 1    A    a    0    0    0
 2    A    b    1    0    0
 3    A    c   NA   NA   NA
 4    A    d    2    4    0
 5    A    e    3    5    2
 6    A    f   NA   NA    4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于列子集修剪 NA - 更优雅的解决方案? 的相关文章

  • 在shiny中过滤传单地图数据

    我在用传单地图设置这个闪亮的东西时遇到了麻烦 我的原帖 https stackoverflow com questions 50111566 applying leaflet map bounds to filter data within
  • R foreach问题(某些进程返回NULL)

    我遇到了问题foreach我正在 R 中使用的程序的一部分 该程序用于运行不同参数的模拟 然后将结果返回到单个列表 然后用于生成报告 当并非所有分配的模拟运行都在报告上实际可见时 就会出现问题 从各方面来看 似乎只有分配的运行的一个子集实际
  • 在 R 中向散点图添加线条

    如何向图表添加线条 我做了以下 dat lt data frame xvar 1 20 rnorm 20 sd 10 yvar 1 20 rnorm 20 sd 10 zvar 1 20 rnorm 20 sd 10 plot dat 1
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • Purrr::map_df() 删除 NULL 行

    使用时purrr map df 我偶尔会传递一个数据框列表 其中一些项目是NULL 当我做 map df 返回行数少于原始列表的数据框 我想发生的事情是这样的map df calls dplyr bind rows 它忽略了NULL价值观
  • 以引用透明的方式从函数的省略号参数中提取符号

    事情又发生了 我正要按下发布答案按钮的问题被删除了 我正在寻找一种方法来从函数的省略号参数中提取绑定到符号的对象的值以及符号 也就是说 我试图以引用透明的方式从省略号中提取符号 我尝试过使用替代品和lazy dots 但没有成功 funct
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 将阴影区域添加到五分位数之间的直方图中

    All 我有一个包含 2 个直方图的图表 其中我还绘制了代表第 20 40 60 和 80 个百分位数的线条 下面的代码使用虚拟数据重现了类似的图表 data lt rbind data frame x rnorm 1000 0 1 g o
  • 更改闪亮 R 中的默认浏览器

    我在 RStudio 中使用 01 hello 虽然在 IE 中默认打开程序时它不会显示直方图 但即使在 Chrome 中 滑块也不起作用 我无法滑动条形图并看到直方图中的变化 如何更改 R 中的默认浏览器 以便闪亮启动 Chrome 而不
  • 如何在 R 或 Python 中制作旭日图?

    到目前为止 我一直无法找到一个可以创建旭日图的 R 库约翰 斯塔斯科 http www cc gatech edu gvu ii sunburst 有人知道如何在 R 或 Python 中实现这一点吗 在极坐标投影中使用 matplotli
  • ggplot2:如何标记事件发生的日期

    我想从第二个情节中获取第一个情节的信息 第二张图表示事件发生的天数 它看起来更宽 因为它没有图例 但它是相同的时间尺度 我选择在第一个图中手动分配颜色 I would like to overlay the second plot dots
  • read_html(url) 和 read_html(content(GET(url), "text")) 之间的区别

    我正在看这个很棒的答案 https stackoverflow com a 58211397 3502164 https stackoverflow com a 58211397 3502164 解决方案的开头包括 library httr
  • 使用 template.docx 从 Shiny App 编织 Word 文档

    我正在尝试使用 template docx 文件从闪亮的应用程序编写一个 Word 文档 我收到以下错误消息 pandoc exe template docx openBinaryFile 不存在 没有这样的文件或目录 以下 3 个文件当前
  • 在 Shiny 中的用户会话之间共享反应数据集

    我有一个相当大的反应数据集 该数据集是通过轮询文件然后按预定义的时间间隔读取该文件而派生的 数据更新频繁 需要不断重新加载 诚然 重新加载可以增量完成并附加到 R 中的现有对象 但事实并非如此 然而目前 尽管会话中的数据相同 但此操作是针对

随机推荐

  • 无法从临时历史表中删除行

    我最近发现了 SQL Server 中的时态表 我想开始使用这个功能 然而 最大的障碍是无法从中删除记录 由于 GDPR 合规性 这是绝对必须的 从历史表中删除记录显然会导致错误 无法从临时历史表中删除行 因此 为了能够从历史表中删除记录
  • 原则问题:无法获取最后插入标识符

    当我尝试将数据保存到我的模型时 Doctrine 抛出此异常 Message Couldn t get last insert identifier 我的表设置代码是 this gt hasColumn id integer 4 array
  • Typescript 类型转换对象因此特定的必需键在类型中不再是可选的?

    假设你有一个对象类型 type Person name string color string address string 但是 您想将该类型更改为以下类型 您知道名称和颜色将存在 type Person name string colo
  • ASP.NET MVC 中部分视图的正确位置是什么?

    有人会确认 ASP NET MVC 中部分视图的最佳位置吗 我的想法是 如果这是一个将在许多地方使用的全球视图 那么就可以共享 如果它是视图的一部分 并被包装到部分视图中以使代码阅读更容易 那么它应该进入 Views Controller
  • 理解从先序遍历构造树的伪代码

    我需要做一些类似于这个问题中描述的任务 根据给定的前序遍历构造树 https stackoverflow com questions 4908545 construct tree with pre order traversal given
  • 如何使用 WebGL 和 GLSL 在 J/s 文件中运行 Shadertoy 中的着色器?

    我是着色器编程新手 我想使用 WebGL 和 GLSL 创建一个着色器 为了了解它的实际工作原理 我想测试 Shadertoy 的着色器 但是如何从 Shadertoy 获取代码并实际在 J S 文件中运行它呢 您是否只需将 Shadert
  • 以编程方式从“p”和“q”生成“d”(RSA)

    我有两个号码 p and q 我知道我能得到phi p 1 q 1 然后ed 1 mod phi 但我不确定我明白这意味着什么 我写了一些Python p NUM q NUM e NUM phi p 1 q 1 d 1 phi float
  • 回显所有 json_encoded 行

    我正在尝试循环访问数据库并输出与连接表匹配的所有行 我有以下两个表 任务项目存储与项目相关的所有数据 加入任务项存储玩家 ID 和玩家拥有的物品之间的关联 JS 传入查询表所需的所有信息 getJSON phpscripts php pla
  • 尝试使用 Protocol Buffers - Google 的数据交换格式时,goog 未定义错误

    我正在尝试使用 Protocol Buffers Google 的数据交换格式https github com google protobuf tree master js https github com google protobuf
  • plpgsql For循环中的Select语句创建多个CSV文件

    我想重复以下查询 8760 次 将一年中每个小时的 2 替换为 1 到 8760 我们的想法是每小时创建一个单独的 CSV 文件以进行进一步处理 COPY SELECT FROM public completedsolarirad2012
  • ZF2 toRoute 与 https

    我们正在使用 Zend Framework 2 并使用toRoute在我们的控制器中重定向到不同的位置 例如 this gt redirect gt toRoute home 无论如何 是否可以使用此方法或替代方法将其重定向到 https
  • 如何嵌入文件以供以后解析执行使用

    我本质上是想浏览一个 html 文件的文件夹 我想将它们嵌入到二进制文件中 并能够根据请求解析它们以用于模板执行目的 如果我措辞不当 请原谅 任何想法 提示 技巧或更好的方法来实现这一点都非常感谢 Template Files type T
  • Base64 java 中的文件编码失败

    我有这个类来编码和解码文件 当我使用 txt 文件运行该类时 结果成功 但是 当我使用 jpg 或 doc 运行代码时 我无法打开该文件 或者它不等于原始文件 我不知道为什么会发生这种情况 我修改了这个类http myjeeva com c
  • 在 Node 中通过“_id”搜索 MongoDB 条目的正确方法

    我在用着MongoDb 作为 的一部分MongoJS in Node 这是 MongoJS 的文档 https github com gett mongojs 我正在尝试根据条目在 Node 内进行调用 id场地 使用香草时MongoDB从
  • 如何改变gvim中的左边距

    我在 XP 上有 gvim 7 3 我的问题是 当我编辑文件并关闭行号时 文本距离左窗口边距太近 我不想添加前导空白 我想增加边距 当我有行号时 我不喜欢 左窗口边框和行号之间有足够的空间 行号和文本之间有足够的空间 但是当行号关闭时就没有
  • 如何获取隐藏数据库的数据库模式?

    我的客户是一家牙科诊所 购买了一款诊所管理软件 该软件安装在他们的本地服务器上 包括患者数据库 时间表和各种医疗记录 现在他们希望我为他们编写一些他们的软件包中未提供的实用程序 为此我需要能够查询该数据库 我尝试致电软件制造商的技术支持 帕
  • Azure AD - 仅应用程序令牌中缺少角色声明

    当我尝试从 Nodejs 后端服务器获取仅应用程序令牌时 如下所述here https learn microsoft com en us graph auth v2 service 4 get an access token 有时role
  • 如何在 Vim 中创建文件夹(优先使用 NERDTree)?

    我知道如何创建重命名 删除和移动文件NERDTree 只需按m then either a d or m 但我不知道如何创建文件夹 有谁知道如何做到这一点NERDTree 或者只是以 vim 的原生 方式 You use m a并放置一个尾
  • ##+#. 是什么意思?是什么意思?

    谷歌几乎是不可能的 因此我的理解仅限于阅读 slime 源代码的上下文线索 也许它是 common lisp 中对象系统的一部分 类似 自己 的东西 片段 cond swank backend sbcl with new stepper p
  • 基于列子集修剪 NA - 更优雅的解决方案?

    stackoverflow 社区的新年难题 通过阅读过去的帖子和答案很有帮助 这是我的第一个问题 我找到了解决方法 但我想知道是否可以建议其他方法 解决方案 我正在尝试从大型文件中删除尾随的 NAdata frame 但这些 NA 只出现在