删除数据框中的所有左侧 NA 并向左移动已清理的行

2023-11-22

我有以下数据框dat,它在某些行的开头呈现特定于行的 NA 数量:

dat <- as.data.frame(rbind(c(NA,NA,1,3,5,NA,NA,NA), c(NA,1:3,6:8,NA), c(1:7,NA)))
dat

#  V1 V2 V3 V4 V5 V6 V7 V8
#  NA NA  1  3  5 NA NA NA
#  NA  1  2  3  6  7  8 NA
#   1 NA  2  3  4  5  6 NA

我的目标是删除每行开头的所有 NA 并左移行值(相应地在移动行的末尾添加 NA,以保持其长度恒定)。

以下代码按预期工作:

for (i in 1:nrow(dat)) {

    if (is.na(dat[i,1])==TRUE) {
        dat1 <- dat[i, min(which(!is.na(dat[i,]))):length(dat[i,])]
        dat[i,]  <- data.frame( dat1, t(rep(NA, ncol(dat)-length(dat1))) )
    }

}

dat

返回:

#  V1 V2 V3 V4 V5 V6 V7 V8
#   1  3  5 NA NA NA NA NA
#   1  2  3  6  7  8 NA NA
#   1 NA  2  3  4  5  6 NA

我想知道是否有更直接的方法来做到这一点,而不使用 for 循环并使用tail功能。

关于最后一点,通过使用min(which(!is.na(dat[1,])))结果是3,正如预期的那样。但如果我输入tail(dat[1,],min(which(!is.na(dat[1,]))))结果是相同的初始行,我不明白为什么..

非常感谢阿努的建议。


如果你只是想让所有的 NA 都被推到最后,你可以尝试

dat <- as.data.frame(rbind(c(NA,NA,1,3,5,NA,NA,NA), c(NA,1:3,6:8,NA), c(1:7,NA)))
dat[3,2] <- NA
> dat
  V1 V2 V3 V4 V5 V6 V7 V8
1 NA NA  1  3  5 NA NA NA
2 NA  1  2  3  6  7  8 NA
3  1 NA  3  4  5  6  7 NA
dat.new<-do.call(rbind,lapply(1:nrow(dat),function(x) t(matrix(dat[x,order(is.na(dat[x,]))])) ))
colnames(dat.new)<-colnames(dat)
> dat.new
     V1 V2 V3 V4 V5 V6 V7 V8
[1,] 1  3  5  NA NA NA NA NA
[2,] 1  2  3  6  7  8  NA NA
[3,] 1  3  4  5  6  7  NA NA
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除数据框中的所有左侧 NA 并向左移动已清理的行 的相关文章

  • 计算一列中正数和负数的数量

    我想计算数据帧的一列中正值和负值的数量 我在 R 中该怎么做 例如 这里是数据框 logFC logCPM LR PValue FDR Bra15066 5 630822 5 184586 73 79927 8 647868e 18 4 0
  • LaTex 中与 knit 和 xtable 交叉引用的问题

    我目前正在与 R Studio 合作 使用 LaTex 中的 R knitr 生成 PDF 文档 在这些文档中 我想在文本中引用的表格中展示我的部分结果 我使用 R 中的 xtable 包生成这些表 它运行良好并为我提供了正确的表 到目前为
  • R中添加水印

    我在用magickR中的库 我想在一些图片上添加水印 I used image annotate功能如下 img lt image read C Users Maydin Desktop manzara png image annotate
  • R 中具有稳健回归的异常值

    我正在使用lmrobR 中的函数使用robustbase用于稳健回归的库 我会把它用作 rob reg lt lmrob y 0 dat method MM control a1 当我想返回我使用的摘要时summary rob reg 稳健
  • 如何在R中删除重复项

    我有一个非常大的数据集 如下所示 df lt data frame school c a a a b b c c c year c 3 3 1 4 2 4 3 1 GPA c 4 4 4 3 3 3 2 2 school year GPA
  • LDA with topicmodels,如何查看不同文档属于哪些主题?

    我正在使用 topicmodels 包中的 LDA 我已经在大约 30 000 个文档上运行它 获取了 30 个主题 并获得了主题的前 10 个单词 它们看起来非常好 但我想看看哪些文档属于哪个主题的概率最高 我该怎么做 myCorpus
  • kableExtra 中的 row_spec() 函数不会在 html 输出中创建水平线

    我想在 kableextra 表中的某一行下方添加一条水平线 row spec 函数的参数 hline after 应该在行下方添加水平线 row spec 文档 https www rdocumentation org packages
  • R foreach问题(某些进程返回NULL)

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

    我有一个平衡面板数据集 df 本质上由三个变量组成 A B and Y 对于一堆独特识别的区域来说 它会随着时间的推移而变化 我想运行一个回归 其中包括区域 下面等式中的区域 和时间 年份 固定效应 如果我没记错的话 我可以通过不同的方式来
  • 如何使用 R 计算成为列表中中位数的概率?

    假设我有以下数据集 其中显示了假设实验的每个状态的三个观察结果的列表 state lt c Iowa Minnesota Illinois outcome lt list c 5 11 11 c 3 12 8 c 9 14 2 dat lt
  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • 尝试读取 CSV 文件时出现“无法识别的字符串转义”

    我正在尝试导入一个 csv文件 以便我可以观看此视频 R ggplot2 图形直方图 http www youtube com watch v 47kWynt3b6M 我安装了所有正确的软件包 包括ggplot以及相关的包 视频中的第一个说
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • 以引用透明的方式从函数的省略号参数中提取符号

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

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这
  • 旋转 Markdown 的表格 pdf 输出

    我想将 pdf 上的表格输出旋转 90 度 我正在使用 Markdown 生成报告并kable循环显示表格 如果可以的话我想继续使用kable因为还有很多其他依赖于它的东西我没有包含在这个 MWE 中 这是一个简单的例子 使用iris数据集

随机推荐

  • GDB 远程调试错误

    我尝试在 x86 64 suse linux 上远程调试 32 位应用程序 但收到此 远程寄存器格式错误 错误 我启动 gdbserver 监听端口 12345 gdbserver localhost 12345 my prog 这是错误
  • 在 pip install 上运行 Makefile

    我有一些协议缓冲区定义 需要将其构建为 Python 源代码 作为pip install过程 我已经子类化了setuptools command install命令输入setup py但我认为它试图在安装包后运行 Makefile 因此无法
  • Quasar框架q-select在v-model中设置一个对象比id

    我有以下代码供我选择
  • 有没有办法知道有人是否为您的网站添加了书签? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我想为我的网站进行统计 我想做的一件事是知道有多少人为我的网站添加了书签 在没有调查的情况下做到这一点的最佳方法是什么 没有办法说清楚 一部分未发送引荐来源信息就到达该页面的人会为其
  • 如何通过数据库绑定将选项“全部”添加到 WPF 中的组合框

    我有以下内容ComboBox在 WPF 中 我知道我可以添加选项ALL与 CompositeCollection 但我不知道如何 如果有人帮助我提供一个简短的教程 那就太好了
  • Spring:hibernate + ehcache

    我正在使用 hibernate 处理一个 spring 项目 并希望使用 ehcache 实现二级缓存 我看到了很多解决这个问题的方法 spring modules cache其中介绍了 Cacheable注解 ehcache spring
  • 如何以编程方式找出哪些频道属于给定 YouTube 网络?

    似乎没有官方的 YouTube API 来查找 YouTube 网络列表或哪些频道属于给定网络 有什么想法如何找到该信息吗 如果没有直接的方法 socialblade com 使用什么算法获得近似列表 我不知道这是否是像socialblad
  • 对 CUDA 内核中不同部分进行计时

    我有一个 CUDA 内核 可以调用一系列设备函数 获取每个设备功能的执行时间的最佳方法是什么 获取设备函数之一中一段代码的执行时间的最佳方法是什么 在我自己的代码中 我使用clock 函数以获得精确的计时 为了方便起见 我有宏 enum t
  • 从推送通知启动时,launchOptions 始终为零

    我正在从 Django 应用程序发送推送通知 使用django 推送通知 到 iOS 应用程序 该应用程序面向 iOS 13 我在运行 iOS 13 3 1 的 iPhone 7 上运行它 我正在 Xcode 11 3 1 中调试 我正在尝
  • Numpy 的特征值/向量不正确

    我试图找到以下矩阵的特征值 向量 A np array 1 0 0 0 1 0 1 1 0 使用代码 from numpy import linalg as LA e vals e vecs LA eig A 我得到这个作为答案 print
  • 正确使用SQL Server中的事务

    我有 2 个命令 需要两个命令都正确执行 否则都不执行 所以我认为我需要一个交易 但我不知道如何正确使用它 下面的脚本有什么问题 BEGIN TRANSACTION Tran1 INSERT INTO Test dbo T1 Title A
  • 如何在 GitHub 上搜索提交消息?

    Not 在 Git 存储库中 而是在GitHub具体来说 如何仅搜索特定存储库 分支的提交消息 您过去可以执行此操作 但 GitHub 在 2013 年中期的某个时候删除了此功能 要在本地实现此目的 您可以执行以下操作 git log g
  • 实现多个通用接口 - 类型错误

    我正在尝试做这样的事情 public interface IRepository
  • Jquery过滤列表不区分大小写

    我想过滤列表而不区分大小写 我只想匹配不匹配大写或小写的字符 XXXXXXX yyyyyyy XXxxx 如果我在搜索框中输入 X 它会同时显示 1 和 3 我添加了下面的代码 但它也区分大小写
  • bash 计算文件中单词的出现次数

    我很抱歉问了这个非常菜鸟的问题 但我还是个新手bash编程 几天前开始 基本上我想要做的是将一个文件与另一个文件中出现的所有单词一起保存 我知道我可以这样做 sort uniq c sort 问题是 之后我想获取第二个文件 再次计算出现次数
  • 使用 std::launder 从指向非活动对象的指针获取指向活动对象成员的指针?

    This question followes this one 让我们考虑一下这个示例代码 struct sso union struct char ptr char size r 8 large str char short str 16
  • R 中按最后一个空格分割字符串

    我有一个向量 其中有多个空格的字符串 我想将其分成两个向量 并按最后的空格分开 例如 vec lt c This is one And another And one more again 应该成为 vec1 c This is And A
  • 类型带反射的文字注入

    上下文 java使用guice 最后版本 大家好 是否可以通过这种方式用 Guice 注入一些 TypeLiteral public MyClass a Class
  • 在 WebApi 和 MVC 项目之间共享 SignalR 中心

    是否有推荐的方法在两个应用程序之间共享 SignalR 集线器 实际情况是一个面向公众的WebAPI项目和一个内部MVC WebApp 我想要做的是从 WebAPI 项目调用 SignalR 集线器上的方法 并将这些方法的结果推送到通过 M
  • 删除数据框中的所有左侧 NA 并向左移动已清理的行

    我有以下数据框dat 它在某些行的开头呈现特定于行的 NA 数量 dat lt as data frame rbind c NA NA 1 3 5 NA NA NA c NA 1 3 6 8 NA c 1 7 NA dat V1 V2 V3