在 R 的行组中向前和向后进行最后一个因子观察

2023-12-08

假设我的数据集看起来像

ID Name 
1  JAY
1  
1  JAY
2  LAY
2  LAY
2  
3  NA
3  KAY
3  

我想根据组中已有的观察结果用缺失值(空或 NA)填充行。所以结果数据框看起来像

ID Name 
1  JAY
1  JAY
1  JAY
2  LAY
2  LAY
2  LAY
3  KAY
3  KAY
3  KAY

我尝试使用na.locf但它不适用于非数值。

DF1 = setDT(DF)[,  N := na.locf(na.locf(Name(NA_real_^!Name),na.rm=FALSE), fromLast=TRUE, na.rm=FALSE), ID][is.na(N), N := 0]

一种选择是按“ID”分组后,对不存在的“名称”进行子集化NA并且不是空白(nzchar(Name)),得到最后的观察结果(tail(...)) 并赋值 (:=) 将其改为“名称”。

setDT(DF)[, Name := tail(Name[!is.na(Name) & nzchar(Name)], 1), by = ID]
DF
#   ID Name
#1:  1  JAY
#2:  1  JAY
#3:  1  JAY
#4:  2  LAY
#5:  2  LAY
#6:  2  LAY
#7:  3  KAY
#8:  3  KAY
#9:  3  KAY

如果“名称”列是factor改变nzchar(Name) to nzchar(as.character(Name))


或者在“i”中指定逻辑向量并分配(:=)最后一次观察(Name[.N]) 按“ID”分组后改为“名称”

setDT(DF)[!is.na(Name) & nzchar(Name), Name := Name[.N], ID]

注意:要使第二个解决方案起作用,“名称”应该是character class.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 的行组中向前和向后进行最后一个因子观察 的相关文章

  • 长变量名在 dplyr 中失败

    长度超过 39 个字符的字符串在 dplyr 中失败 返回错误 错误 索引超出范围 我错过了什么还是这是一个错误 40 个字符不起作用 library dplyr names iris 5 lt vvv 5vvv10vvv15vvv20vv
  • 带有用户输入的knitr

    我正在使用 R markdown 并使用 Rstudio 来 Knit 我有以下 R markdown 文件 title Untitled author date output html document r setup include F
  • 在 Shiny 中设置一个绘图缩放以匹配另一个绘图缩放

    我正在尝试使用情节重排获取一个图的 x 轴缩放限制 并将它们应用到 Shiny 中的另一个图 到目前为止 我可以从 plot1 x轴限制 获取相关的plotly relayout数据 将其转换 从数字到日期 并在绘制 plot2 之前将其提
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • 如何调整ggplot直方图的时间刻度轴

    我正在使用一个数据框 其中一列包含POSIXct日期时间值 我正在尝试使用绘制这些时间戳的直方图ggplot2但我有两个问题 我不知道如何设置 binwidthgeom histogram 我想将每个垃圾箱设置为一天或一周 我尝试提供 di
  • 使用底格里斯河从纬度/经度获取人口普查区

    我有相对较多的坐标 我想获取其人口普查区 除了 FIPS 代码 我知道我可以使用以下命令查找各个纬度 经度对call geolocator latlon 已完成here https stackoverflow com questions 5
  • 在函数内部调用 clusterApply 时,性能会下降

    我遇到了一个奇怪的问题clusterApply 我已经能够尽可能地隔离它 如下所示 首先 我从全局环境运行以下代码 require parallel cl lt makeCluster rep localhost 20 SOCK xl lt
  • ggplot 中的错误问题:“grid.Call(”L_textBounds“, as.graphicsAnnot(x$label), x$x, x$y, … 中的错误”[重复]

    这个问题在这里已经有答案了 我试图在 ggplot 中制作一个条形图 其中我通过强制其中一些标签为长度为零的字符串 即 来指定要显示的标签 但是 我收到错误 Error in grid Call L textBounds as graphi
  • R.matlab/readMat:readTag(this) 中出错

    我正在尝试使用 R matlab 将 matlab 文件读入 R 但遇到此错误 require R matlab r lt readMat file mat verbose T Trying to read MAT v5 file stre
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • 如何按 data.table 中的十分位数组计算统计数据

    我有一个 data table 想按组计算统计数据 R set seed 1 R DT data table a rnorm 100 b rnorm 100 这些组应该定义为 R quantile DT a probs seq 1 9 1
  • 如何将此“for”循环转换为向量解

    这个问题与 将嵌入其他文本的长州名称转换为两个字母的州缩写 https stackoverflow com questions 25582518 convert long state names embedded with other te
  • R - 通过覆盖和递归合并列表

    假设我有两个带有名字的列表 a list a 1 b 2 c list d 1 e 2 d list a 1 b 2 b list a 2 c list e 1 f 2 d 3 e 2 我想递归地合并这些列表 如果第二个参数包含冲突的值 则
  • 如何计算嵌套函数中的粘合表达式?

    我正在尝试嵌套一个函数 该函数将两个字符串粘合在一起 该函数使用组合字符串来命名数据帧的列 然而 问题似乎是粘合表达式没有足够早地评估为字符串 我可以 并且应该 强制在将表达式作为参数传递给另一个函数之前对其进行求值吗 library ti
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

  • 使用 Javascript 关闭所有弹出窗口

    有谁知道如何在Javascript中关闭所有弹出窗口 由javascript弹出的窗口 Example 单击打开 3 个新窗口 按钮 并使用 window open 来 打开所有 3 个新窗口 单击一个按钮并关闭所有 3 个按钮 一起弹出窗
  • 右值引用和左值引用有什么区别? (代码生成)

    从较低级别的角度来看 r 值参考是什么样的 我似乎无法理解它 我可以查看从右值引用与左值引用生成的代码 等效的 C 或 x86 x64 示例吗 例如 这个构造会是什么样子 我们暂时假设没有复制省略 vector
  • Request.IsAuthenticated 始终返回 false

    我正在努力向我正在构建的站点添加登录功能 但登录后 Request IsAuthenticated 属性始终返回 true 我搜索了这个错误并一遍又一遍地找到相同的答案 但这些解决方案对我不起作用 来自 AccountController
  • Android:在 ConstraintLayout 中保留全宽和未定义高度 ImageView 的比例?

    In a ConstraintLayout an ImageView与其父级绑定的方式如下 它的左侧绑定到屏幕的左侧 它的右侧绑定到屏幕的右侧 它的顶部绑定到小部件的底部 它的底边绑定到屏幕的底边 Thus my ImageView看起来是
  • .Value = .Value 的作用与 VBA 中的 Evaluate() 函数类似吗?

    考虑以下片段 它将相同的公式写入两个单元格A1 and A2 Sub Main With Range A1 Formula 1 1 End With With Range A2 Formula 1 1 Value Value End Wit
  • 日期之间的差异

    我想计算两个时间之间的差异 其中一个是当前时间 另一个是 HH MM 格式 始终是未来时间 如果我只是从 now 中减去 futuretime 它当然应该是一个正数 这工作正常 直到 如果 now 是下午或晚上 而 futuretime 是
  • PHP按位左移32位问题以及大数算术运算的不良结果

    我有以下问题 第一 我试图对一个大数进行 32 位按位左移 并且由于某种原因该数字总是按原样返回 例如 echo 516103988 lt lt 32 echoes 516103988 因为将位向左移动一位相当于乘以 2 所以我尝试将数字乘
  • 错误:来自角度控制器的 [ng:areq]

    这是一个很遥远的事情 但是以前有人见过这个错误吗 我正在尝试使用 Express Angular 和 mongoDB 添加 传输器 每当我访问由传输控制器控制的页面时 我都会收到此错误 Error ng areq http errors a
  • 如何正确配置node.js以使用自签名根证书?

    所以 在绝望的路上 我想知道是否有人在某个地方可以帮助我配置nodejs以接受根CA自签名 我需要它才能通过使用 TLS 的节点获取来访问开发中的自定义 API 环境 操作系统 Ubuntu 20 04 作为虚拟机中的来宾 Windows
  • 根据 JavaScript 中的另一个对象数组过滤对象数组

    我有一个像这样的数组 arr1 A red B blue Q green R blue B green M red Q white R blue 每个对象都有两个键 值对 一个字母和颜色 我有另一个像这样的数组 filter A val B
  • Perl:在复杂哈希内生成数组

    为了使我的数据更易于访问 我想将表格数据存储在复杂的哈希中 当脚本循环遍历我的数据时 我试图增长一个 HoHoHoA 根据 perldsc 中的指南 push hash column i date hour data i 该脚本编译并运行没
  • JBoss 上的 JaxWS ClassCastException

    我正在使用 JBoss 5 1 0 GA 适用于 JDK6 和 jaxws 2 2 6 当我调用 Web 服务时 出现以下异常 java util ServiceConfigurationError javax xml ws spi Pro
  • Kotlin 中的简单泛型函数失败

    这是 Kotlin 中的一个简单的泛型函数 fun
  • RGoogleDocs 和现在的 RGoogleData

    RGoogle文档太棒了 它允许人们在 Google 上存储数据并将其实时读取到 R 前几天我尝试将其安装在计算机上 结果发现我能找到的只是 RForge 中的 RGoogleData 这两个包之间有什么关系呢 我尝试在同一搜索中谷歌搜索
  • iOS HTML5 Canvas toDataURL

    我需要一些帮助 我们似乎在 iOS 上遇到了有关通过 HTML 5 Canvas 获取图像的 base64 的问题 如果我们使用画布的默认高度 宽度或对高度和宽度进行硬编码 一切都会正常工作 但是 如果我们将画布高度 宽度设置为图像 src
  • KSQL 表-表左外连接多次发出相同的连接结果

    使用 KSQL 并执行左外连接 我可以看到有时多次发出的连接结果 换句话说 相同的连接结果会被多次发出 我不是在谈论右侧具有空值的联接版本和不具有空值的版本 从字面上看 连接产生的同一条记录会被多次发出 我想知道这是否是预期的行为 一般答案
  • 如何在 Flutter 中嵌套 StreamBuilder?

    我有 2 个流 需要组合起来构建一个小部件 但与我见过的其他问题不同 我需要嵌套流 我有一个从 Firestore 获取文档集合的流 以及一个依赖于第一个文档的数据来获取文档子集合的流 我想将它们组合成一个流 但它们需要嵌套 因为每个文档都
  • 通过传递引用或返回引用来初始化结构是更好的方式吗?

    假设我有以下内容 typedef struct int x int y char a char b myStruct 创建一个新的更好的做法吗 myStruct通过传递对空函数的引用或返回一个函数来使用函数myStruct来自函数 void
  • 正则表达式在特定位置添加空格

    我有一个 14 位长的号码 需要将其拆分成以下格式 xxx xxx xxx xxxxx 我有一个正则表达式 它从末尾开始分割每 3 个字符 因为前瞻 d 3 d 这给了我 xx xxx xxx xxx xxx 我尝试在 regex101 c
  • 在 R 的行组中向前和向后进行最后一个因子观察

    假设我的数据集看起来像 ID Name 1 JAY 1 1 JAY 2 LAY 2 LAY 2 3 NA 3 KAY 3 我想根据组中已有的观察结果用缺失值 空或 NA 填充行 所以结果数据框看起来像 ID Name 1 JAY 1 JAY