R:根据其他列填充和/或复制行

2024-03-02

我的问题是基于此question https://stackoverflow.com/questions/35614425/r-code-programming-filling-missing-column-values-down-first-and-then-up-on-a-st/35614728#35614728.

我有一个数据如下。我想通过先向下看然后向上查找来填充单元格,只要 bom 相同。如果 bom=A,我想填充如图所示的行。但在 bom=B 的情况下,由于 type_p 列不同,我想重复行并感受空白

bom=c(rep("A",4),rep("B",3))
Part=c("","lambda","beta","","tim","tom","")
type_p=c("","sub","sub","","sub","pan","")
ww=c(1,2,3,4,1,2,3)
df=data.frame(bom,Part,type_p,ww)

> df
  bom   Part type_p ww
1   A                1
2   A lambda    sub  2
3   A   beta    sub  3
4   A                4
5   B    tim    sub  1
6   B    tom    pan  2
7   B                3

我想要的最终数据如下

    bom Part    type_p  ww
1   A   lambda  sub      1
2   A   lambda  sub      2
3   A   beta    sub      3
4   A   beta    sub      4
5   B   tim     sub      1
6   B   tim     sub      2
7   B   tim     sub      3
5   B   tom     pan      1
6   B   tom     pan      2
7   B   tom     pan      3

________________________________________更新 1

我想要的逻辑如下。请记住,我的数据非常庞大,每列都有数千个值。

bom 和 ww 列始终填充/填充传入数据

  1. 检查 bom 列中的条目在 type_p 列中是否有超过 1 个值
  2. 如果只有 1 个值,则首先向下查找,然后向上查找,以填充 type_p 和 ww 列中的空白。在这种情况下 bom=A 在 type_p (sub) 中只有一个值
  3. 如果 bom 列中的条目在 type_p 列中具有超过 1 个唯一值,则创建该 bom 相同行的附加集,以便总集将等于该 bom 的 type_p 列中的不同值。在这种情况下 bom=B 在 type_p 中有两个值(sub 和 pan)
  4. 通过先向下然后向上查找来填充 type_p 和 ww 列中的空白(查看源行以填充值)

=================================================== =========更新2

步骤 3 后,数据框将如下所示

> df
   bom   Part type_p ww
1    A lambda    sub  1
2    A lambda    sub  2
3    A   beta    sub  3
4    A   beta    sub  4
5    B    tim    sub  1
6    B                2
7    B                3
8    B                1
9    B    tom    pan  2
10   B                3

With tidyr and dplyr,你可以设法做一些接近你目标的事情

library(tidyr)
library(dplyr)
# replacing empty string with NA
df <- df %>% mutate_each(funs(sub("^$", NA, .)), Part, type_p)
# filling missing values 
df <- df %>% fill(Part, type_p,.direction = "down") %>% fill(Part, type_p,.direction = "up")

df
#>   bom   Part type_p ww
#> 1   A lambda    sub  1
#> 2   A lambda    sub  2
#> 3   A   beta    sub  3
#> 4   A   beta    sub  4
#> 5   B    tim    sub  1
#> 6   B    tom    pan  2
#> 7   B    tom    pan  3

要获得您所描述的内容(在问题和评论中),您可以分别对待 BOM A 和 B:

bind_rows(
  df %>% filter(bom == "A"), 
  df %>% filter(bom == "B") %>%
    complete(nesting(bom, Part, type_p), ww)
)
#> Source: local data frame [10 x 4]
#> 
#>       bom   Part type_p    ww
#>    (fctr)  (chr)  (chr) (dbl)
#> 1       A lambda    sub     1
#> 2       A lambda    sub     2
#> 3       A   beta    sub     3
#> 4       A   beta    sub     4
#> 5       B    tim    sub     1
#> 6       B    tim    sub     2
#> 7       B    tim    sub     3
#> 8       B    tom    pan     1
#> 9       B    tom    pan     2
#> 10      B    tom    pan     3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R:根据其他列填充和/或复制行 的相关文章

  • rmarkdown:pandoc:找不到 pdflatex

    当我在 Mac 上使用 render rmarkdown 从 Rmd 文件生成 pdf 文件时 出现错误消息 pandoc pdflatex not found pdflatex is needed for pdf output Error
  • R data.table %like% 带有逻辑 AND

    我正在尝试构建一个闪亮的搜索引擎应用程序 我根据搜索关键字返回 data table DT lt data table field c A B C A C D A D A B A D B C F B D K DT field like A
  • 提取“|”之前的字符串[复制]

    这个问题在这里已经有答案了 我有一个数据集 其中一列如下所示 ABC DEF GHI ABCD EFG HIJK ABCDE FGHI JKL DEF GHIJ KLM GHI JKLM NO PQRS BCDE FGHI JKL 等等 我
  • 为一列中的多行生成不同的随机数

    我得到了一列带有整数值 n 行 的列 我想生成满足特定条件的值的正态分布范围内的随机数 我尝试使用下面的代码 但它们太慢了 df members bd df members bd apply lambda x np random norma
  • 根据列中的条件将 Pandas 数据框拆分为多个数据框

    为了为 ML 任务正确准备数据 我需要能够将原始数据帧拆分为多个较小的数据帧 我想要获取上面的所有行 包括 BOOL 列的值为 1 的行 对于每次出现的 1 即 n 个数据帧 其中 n 是 1 出现的次数 数据样本 df pd DataFr
  • 按 data.table 中的所有列进行分组时,.SD 为空

    我无法获得一致的输出data table使用一致的语法 请参阅下面的示例 library data table d lt data table x c 1 1 2 2 y c 1 1 2 2 data table shown below x
  • 使用 RSelenium 下载嵌入到框架中的文件

    我正在参与一个项目 其中有一个网页 我需要单击该网页才能获取 pdf 文件 该文件出现在同一页面内的新窗口中 我认为是 iframe 然后我需要单击一个按钮来下载文件 我正在使用的代码如下 library wdman library RSe
  • 在 R 中使用 NA 计算栅格数据的变异函数

    Summary 我有一个包含 NA 值的栅格数据集 并且想要计算它的变异函数 忽略 NA 我怎样才能做到这一点 我有一个图像 已使用以下命令加载到 R 中readGDAL函数 存储为im 为了使其可重复 结果dput图像上可在https g
  • 在正投影中绘制世界地图给出“非有限点”

    我有一个世界国家的形状文件 从下载here http thematicmapping org downloads TM WORLD BORDERS 0 3 zip 我可以使用 R 在 R 中绘制它 countries lt readOGR
  • 使用 dplyr 按行用以前的值填充缺失值

    我正在使用 R 中的一个数据框 该数据框跨行有一些缺失值 数据框是下一个 dput添加到最后 df id V1 V2 V3 V4 1 01 1 1 1 NA 2 02 2 1 NA NA 3 03 3 1 NA NA 4 04 4 1 2
  • 散点图的连续分位数

    我有一个数据集 我为其绘制了回归图 使用ggplot2 s stat smooth ggplot data mydf aes x time y pdm geom point stat smooth col red 我还想使用相同的方法获得分
  • 应用函数创建以多列作为参数的字符串

    我有一个像这样的数据框 name size type av size type 0 John 23 Qapra 22 1 Dan 21 nuk neH 12 2 Monica 12 kahless 15 我想用一个句子创建一个新列 如下所示
  • 如何在 R 中将 dd/mm/yy 转换为 yyyy-mm-dd

    我有一个向量 其日期值采用这种格式 dd mm yy 例如 27 06 16 我想将其转换为 yyyy mm dd 格式 例如 2016 06 27 以进行逻辑比较 我正在使用这个表达 as Date as character 27 06
  • R:用不同的颜色将一个 ECDF 绘制在另一个 ECDF 之上

    我有几个累积经验密度函数 我想将它们绘制在彼此之上 以说明两条曲线的差异 正如所指出的在上一个问题中 https i stack imgur com V7fIq png 绘制 ECDF 的函数很简单plot Ecdf 当我阅读精美的手册页时
  • 在 R 中每小时获取在线数据

    我想获取天文台每小时更新预报的数据 我的一次性数据提取代码如下 library RCurl web lt getURL http www hko gov hk contente htm web lt unlist strsplit web
  • JAGS 中的柯西先验

    我正在使用 rJAGS 构建多级贝叶斯模型 并且我想为我的几个参数指定柯西先验 有没有办法在 JAGS 中做到这一点 或者我需要切换到 STAN 吗 我的 JAGS 模型如下 我想更换dnorm柯西分布 但 JAGS 找不到标准R柯西分布
  • 在 grid.text 中使用 pch 字符

    我使用 ggplot2 创建了一个图表 现在我想让图例不在图表上 而是在图表外的网格中 我现在的问题是 是否有人知道是否有可能在 grid text 中使用 pch 符号 Here is an image to show what I wa
  • 如何在 R 或 MATLAB 中为散点图创建阴影误差条“框”

    我想在 R 或 MATLAB 中创建一个简单的散点图 涉及两个变量 x 和 y 它们有与之相关的错误 epsilon x 和 epsilon y 然而 我不是添加误差线 而是希望在每个 x y 对周围创建一个 阴影框 其中框的高度范围从 y
  • 具有可变宽度的重叠条形图/直方图

    I have chr totgenes FST gt 0 4 FST gt 0 4 exFST gt 0 4 exFST gt 0 4 inFST gt 0 4 inFST gt 0 4 chrtotlen 1 1457 49 3 3630
  • 按组保留行,直到列中值第一次出现为止。不允许存在值的组

    我有一个像这样的数据框 gt df id type 1 1 a 2 1 a 3 1 b 4 1 a 5 1 b 6 2 a 7 2 a 8 2 b 9 3 a 10 3 a 我想保留每个组 id 的所有行 直到类型列中第一次出现值 b 为止

随机推荐

  • 三.JSL:加载Blender模型需要本地服务器吗?

    我正在使用 Three js 开发基于 Web 的 3D WebGL 应用程序 我正在尝试使用以下代码加载 Blender 模型 JS 文件 var loader new THREE JSONLoader var jsonLoader ne
  • SQLAlchemy 在同一事务中删除和插入

    我正在使用 SQLAlchemy 并在一个事务中 我想要执行以下操作 删除满足特定条件的所有记录 假设这是Cars color red 现在 我想插入满足特定条件的所有汽车 例如Cars type Honda 现在假设我的数据库只是一个包含
  • 如何调试 SwiftUI AttributeGraph 循环警告?

    我在使用 SwiftUI 的应用程序中收到很多 AttributeGraph 循环警告 有什么方法可以调试导致它的原因吗 这是控制台中显示的内容 AttributeGraph cycle detected through attribute
  • 创建一个通用 Swift 函数以返回 Core Data 实体数组

    警告 我对 Swift 和 Core Data 还很陌生 我的代码中有几个函数返回特定实体类型的数组 func fetchStores gt Store var stores Store let fetchRequest NSFetchRe
  • TypeScript:导入的模块类不可见

    我正在使用多个模块测试打字稿编译器 这些模块将被编译为 AMD 模块 我有一个模块 测试 和一个将使用它的单独文件 test ts export module test use strict export class Person age
  • 相交的矩形

    这是一个分析几何类型的问题 我不确定我可以将其发布在这里 但是我必须想出一个 Java 函数来执行此功能 我在页面 swing 容器中有多个矩形 我知道现在我需要找到哪些矩形彼此相交 这里的一件好事是相交的矩形将始终具有相同的 y 分量 并
  • SQL 选择一列中具有重复值的所有行

    我有一个users中包含重复值的表employee id柱子 我需要列出具有重复的employee ids 的所有行及其姓名 我需要查看所有具有重复项的用户employee id这样我就可以消除哪些值是有效的冲突 SELECT name e
  • Windows Phone Silverlight 8.1 不支持 Windows.UI.Notifications.ToastNotification API?

    我正在尝试验证我的应用程序 但出现以下错误 发现错误 支持的 API 测试检测到以下错误 This API is not supported for this application type Api Windows UI Notifica
  • 需要帮助以更有效的方式设计搜索算法

    我有一个涉及生物领域的问题 现在我有4个非常大的文件 每个有1亿行 但结构相当简单 这些文件的每一行只有2个字段 都代表一种基因 我的目标是 设计一种有效的算法 可以实现以下目标 在这 4 个文件的内容中找到一个圆圈 圆定义为 field
  • 解读 C++ 模板错误消息

    当人们说 C 的错误消息对于模板来说非常糟糕时 我真的开始理解他们的意思了 对于像函数与其原型不匹配这样简单的事情 我见过可怕的长错误 有什么技巧可以破译这些错误吗 编辑 我同时使用 gcc 和 MSVC 他们俩看起来都非常可怕 您可以尝试
  • 如何从闭包内部修改在闭包外部定义的变量?

    如何从闭包内部修改在闭包外部定义的变量 Code fn main let mut t foo to string println t let mut closure t clear closure println t 编译错误 cannot
  • 为什么 jQuery 或 getElementById 等 DOM 方法找不到该元素?

    可能的原因有哪些document getElementById id 或者任何其他 DOM 方法 jQuery 选择器找不到元素 示例问题包括 jQuery 默默地无法绑定事件处理程序 jQuery getter 方法 val html t
  • 当我更改控件的左侧位置和宽度时,如何阻止控件抽搐?

    我有一个用户可以用鼠标调整大小的控件 当它们移动到右侧时 我只需更改宽度 一切正常 但是 当它们移动左侧尺寸时 我必须更改 左侧 和 宽度 属性 控件的右侧明显抽搐 在新位置显示旧宽度 如果我使用边界同时设置左侧和宽度 它仍然会抽搐 是否将
  • 删除中不存在的地方

    我遇到的一个简单问题 我从以下 SQL 中收到语法错误 DELETE FROM Blog Category c WHERE NOT EXISTS SELECT FROM Blog Posts p WHERE p postCategory b
  • C 中数组的递归和[重复]

    这个问题在这里已经有答案了 你好 我正在学习 C 中的递归 我试图找到元素的总和 这是我的主要 int main int arr 1 2 3 4 5 int sum sum arr sum arr 4 printf nsum is d su
  • 有和/或没有类型的 AWS DynamoDB 数据?

    我正在使用aws sdk让 NodeJS 与 DynamoDB 表进行交互 这是我第一次了解 DynamoDB 当使用像这样的调用时getItem or updateItem 数据结构包括类型 如下所示 a S My string 有没有什
  • iPhone 应用程序提交到 App Store 所需的图形的完整列表

    你好 精彩的stackoverflowers 我希望这个问题在本网站的范围内 我正准备向 AppStore 提交我的第一个 iPhone 应用程序 我想确保我拥有所需的所有图形 我还想确保我有 iPad 所需的图形和成为特色 如果我幸运的话
  • 如何在 Pandas DataFrame 的几列中进行 one-hot 编码,以便稍后与 Scikit-Learn 一起使用

    假设我有以下数据 import pandas as pd data Reference 1 2 3 4 5 Brand Volkswagen Volvo Volvo Audi Volkswagen Town Berlin Berlin St
  • 验证 apk 是否为付费副本(避免应用程序盗版)

    我对 Android Play 商店完全陌生 我正在开发一个即将完成并准备发布的应用程序 但我注意到您可以将 apk 文件 购买后 复制到另一个位置 例如 SD 卡 并将其安装在另一台设备上 这是我想避免的事情 我的问题是 Google P
  • R:根据其他列填充和/或复制行

    我的问题是基于此question https stackoverflow com questions 35614425 r code programming filling missing column values down first