r - 数据框取两列并根据值采取行动
问题描述
我有一个包含两列 fk (foreign_key) 和 fk_1 的数据框。在数据集中,它们都被称为 fk。
我想摆脱 fk_1 以便只有 1 列带有 fk。fk 可以包含一个数字,一个#-hashcode,fk_1 也可以。
现在我只想保留数字,但如果 fk 和 fk_1 有数字。我想创建一个采用 fk_1 值的新条目,因此旧条目可以采用 fk 值
例子:
FK FK-1 Name Expected Result
1 #abc07zy Test 1
#abc2Z90 2 Beta 2
3 4 Alpha 3 and a new entry with value 4
所以总列表看起来像:
FK Name
1 Test
2 Beta
3 Alpha
4 Alpha
我试图用ifelse
and grepl
on做一些事情"#"
,但这只适用于一列。而且我不知道如何实现数字 3 和 4 将成为两个条目。
解决方案
我们可以使用 合并列,使用FK
获取列中的所有数字,并在单独的行中获取数据。FK_1
unite
str_extract_all
library(dplyr)
library(tidyr)
df %>%
unite(FK, FK, FK_1, sep = " ") %>%
mutate(FK = stringr::str_extract_all(FK, '\\b\\d+\\b')) %>%
unnest(FK)
# A tibble: 4 x 2
# FK Name
# <chr> <fct>
#1 1 Test
#2 2 Beta
#3 3 Alpha
#4 4 Alpha
推荐阅读
- javascript - 使用 Cheerio 中的 each 函数时如何获取 HTML 格式的数据
- cluster-analysis - k-means 聚类或 K-medoids 中的 Dim 是什么?
- c# - 如何初始化树节点以进行调试?
- shopify - 客户响应 JSON 中 Shopify CustomerID 的最大长度是多少
- mongodb - mongodb currentop 输出“secs_running”、“microsecs_running”值不匹配
- python - 如何在python中有效地组合断开的csr矩阵?
- java - 曼宁出版的骆驼行动
- unicode - 使用 Barcode4J MessagePatternUtil 解析 € 时遇到问题
- python - MySQL:如果不存在则创建新列并将已存在列的值复制到 Python 中新创建的列
- flutter - UI 和 HTTP 调用的 Flutter 集成测试