首页 > 解决方案 > R - 组合两个字符向量,然后切断最后一个字符

问题描述

我正在处理一个大型数据集,该数据集在两列中存储一个 9 位 ID,ID_part_1例如ID_part_2

ID 部分 1 是顶级规范的通用标识符,在本列中重复,ID 部分 2 对于每个 ID 部分 1 都是唯一的。我想将部分 1 与部分 2 组合,然后切断最后一个字符或整数生成的字符串。

请参阅下面的示例数据:

    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_1ID_part_2 都是“字符”类型。计算结果应存储在 Comb_ID 列中。在从组合字符串中修剪最后一个字符时,我随后将从计算列中提取所有唯一值:

unique(my_data.dt[, Comb_ID])

标签: r

解决方案


我们可以使用substrwith pasteinbase R

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))

推荐阅读