r - 通过相同的符号组合 data.frame 中的列
问题描述
我想用文本中的相同符号组合一个 data.frame 列表。这是我的数据:
d1 <- data.frame(Name = c("aaa", "bbb", "ccc","ddd","ggg", "eee"), ID = c("123", "456", "789", "101112", "131415", "161718"), stringsAsFactors = FALSE)
d2 <- data.frame(Code = c("123.aR16", "456d245", "14asadf789", "123_dy6r", "202122-fsd", "101112gh"), CupCake = c("a1", "a2", "a3", "a4", "a5", "a6"), stringsAsFactors = FALSE)
如果Code包含来自ID的相同数字组合 -> 使用来自Name的数据添加新值。
它看起来像来自Name的复制粘贴值。
预期输出:
Name ID Code CupCake
1 aaa 123 123.aR16 a1
2 bbb 456 456d245 a2
3 ccc 789 14asadf789 a3
4 aaa 123 123_dy6r a4
5 NA NA 202122-fsd a5
6 ddd 101112 101112gh a6
解决方案
使用tidyverse
包:
library(dplyr)
library(stringr)
# Create ID in d2
d2 <- mutate(d2, ID = str_extract(Code, "([0-9]+)"))
# Merge d1 and d2 based on ID
df <- full_join(d1, d2, by= "ID")
# Edit: if you only want one row per ID
df1 <- inner_join(d1, d2, by= "ID")
# Or
df2 <- inner_join(d2, d1, by= "ID")
推荐阅读
- flutter - 任务“:app:validateSigningRelease”执行失败。颤振错误
- r - 折叠/连接/聚合多个列到每个组中的单个逗号分隔字符串
- drupal-8 - 在 drupal 8 中,我如何访问媒体实体的标记?
- javascript - Delete 函数工作一次,然后从其余元素中卸载 [JavaScript 模块]
- r - 在 ggplot 中覆盖离散和连续层 - 对层顺序很重要感到惊讶
- google-sheets - 如何形成按匹配值分组的项目字符串?(例如“红色:苹果、樱桃”)
- c# - 使用 CURL 调用 WebRequest
- c# - 如何使用 .NET Core 将 JPEG 转换为 WebP 格式?
- node.js - 使用 smtp 服务器发送和接收电子邮件
- reactjs - 为什么我的 handleClick 函数中的 setState 会晚一步更新组件的状态?