[英]R - combine two character vectors, then cut off last character
我正在处理一个大型数据集,该数据集将 9 位 ID 存储在两列中,例如ID_part_1
和ID_part_2
ID 部分 1 是顶级规范的通用标识符,在本专栏中重复,ID 部分 2 对于每个 ID 部分 1 都是唯一的。我想将部分 1 与部分 2 组合,然后切断最后一个字符或 integer生成的字符串。
请参阅下面的示例数据:
ID_part_1 ID_part_2 Comb_ID
G12345 678 G1234567
G12345 679 G1234567
A23567 9C1 A235679C
123456 789 12345678
所有数据都存储在 data.table 中,例如my_data.dt
,因此可以轻松处理这些列。 ID_part_1
和ID_part_2
列都是“字符”类型。 计算结果应存储在 Comb_ID 列中。 在从组合字符串中修剪最后一个字符时,我随后将从计算列中提取所有唯一值:
unique(my_data.dt[, Comb_ID])
我们可以在base R
中使用带有paste
的substr
my_data.dt$Comb_ID <- with(my_data.dt,
paste0(ID_part_1, substr(ID_part_2, 1, 2)))
my_data.dt$Comb_ID
#[1] "G1234567" "G1234567" "A235679C" "12345678"
注意:不需要包
my_data.dt <- structure(list(ID_part_1 = c("G12345", "G12345", "A23567", "123456"
), ID_part_2 = c("678", "679", "9C1", "789"), Comb_ID = c("G1234567",
"G1234567", "A235679C", "12345678")), class = "data.frame", row.names = c(NA,
-4L))
基于 tidyverse 的选项。
library(dplyr)
library(stringr)
library(purrr)
data %>%
mutate(Comb_ID = map2_chr(ID_part_1, ID_part_2, ~ str_c(.x, .y, collapse = '')),
Comb_ID = str_sub(Comb_ID, 1, -2))
# ID_part_1 ID_part_2 Comb_ID
# 1: G12345 678 G1234567
# 2: G12345 679 G1234567
# 3: A23567 9C1 A235679C
# 4: 123456 789 12345678
数据
data <- structure(list(ID_part_1 = c("G12345", "G12345", "A23567", "123456"
), ID_part_2 = c("678", "679", "9C1", "789")), row.names = c(NA,
-4L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x55dd6c5238e0>)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.