r - 根据 R 中的指定条件更新数据帧
问题描述
library(data.table)
a <- data.table(p = seq(1, 5, 0.5), s = 1:9)
b <- data.table(p = c(2.0, 6, 3.5), s = c(4, 7, 0))
我有 2 个数据框,数据框“a”是基础,数据框“b”包含更新。我需要使用以下条件对数据框“a”进行更改:
- 如果在“s”列中的数据帧“b”中有值 0,则有必要从数据帧“a”中删除具有相应值“p”的所有行
- 如果在数据框“in”中,列“s”中的值与数据框“a”中的相应值“s”不同,则必须将其替换为数据框“b”中的值
- 如果数据框“b”具有唯一值“p”,则需要将此行添加到数据框“a”
结果:
p s
1: 1.0 1
2: 1.5 2
3: 2.0 4
4: 2.5 4
5: 3.0 5
6: 4.0 7
7: 4.5 8
8: 5.0 9
9: 6.0 7
解决方案
使用dplyr
(问题未指定是否data.table
需要语法)。
- 获取
p
需要删除的值。 - 过滤出在 1. 中找到的值,并用于
distinct()
确保所有行都是唯一的。
library(dplyr)
to_delete <-
filter(b, s == 0) %>%
pull(p)
bind_rows(a, b) %>%
filter(!p %in% to_delete) %>%
distinct(p, .keep_all = TRUE)
#> p s
#> 1: 1.0 1
#> 2: 1.5 2
#> 3: 2.0 3
#> 4: 2.5 4
#> 5: 3.0 5
#> 6: 4.0 7
#> 7: 4.5 8
#> 8: 5.0 9
#> 9: 6.0 7
推荐阅读
- bcrypt - 特定的 saltRound 会生成唯一的盐吗?
- python - 关于类或多行动画的 Python 代码?
- angular - 角度 2 中的条件 distinctUntilChanged
- r - R Shiny - 在modalDialog中预选数据表的行和页
- artificial-intelligence - 人工智能算法计算
- php - 从供应商面板更新 WooCommerce Dokan 插件中的产品的挂钩是什么?
- python-3.x - 在 tkinter python 上添加可点击的提交按钮时出错
- javascript - 未捕获的 SyntaxError JSON 中的意外标记 <
- php - Code Igniter 无法更新数据(无错误)
- c# - 如何修复 MicrosoftEntityFrameworkCore 的版本冲突