我可以根据 R 中的位置拆分字符向量吗?

Can I split character vector based on position in R?

这是我的第一个 post,所以 posting 的所有提示都很有帮助 :)

我想合并两个具有相同 person-ID 的数据框,但标识符彼此略有(但系统地)不同。

参见下面的示例:

A_ID <- c("A123", "B213", "C421", "C312")
A_score <- c(8,10,9,10)
A <- data.frame(A_ID, A_score)
colnames(A) <- c("ID", "A_score")


B_ID <- c("A-123", "B-213", "C-421", "C-312")
B_score <- c(2,10,9,10)
B <- data.frame(B_ID, B_score)
colnames(B) <- c("ID", "B_score")

问题是由于df B标识符中间的-,这些dfs不会合并。

我想要实现的是合并(fulljoin)dfs 以形成列:ID | A_score | B_score.

我尝试将字符向量转换为字符串,然后在字母后的字符位置 2 拆分 ID (A),添加一个 - 然后粘贴并转换回特征向量。但我觉得这可能不是最有效和最简单的方法。

谢谢!

尝试使用 gsub() 清理第二个 id 变量,然后将数据帧合并到一个数据管道中。这里的代码使用 tidyverse 函数:

library(tidyverse)
#Code
NewA <- A %>% full_join(B %>% mutate(ID=gsub('-','',ID)))

输出:

    ID A_score B_score
1 A123       8       2
2 B213      10      10
3 C421       9       9
4 C312      10      10

使用sub去掉-然后merge:

B$ID <- sub("-", "", B$ID)
merge(A, B, "ID")
    ID A_score B_score
1 A123       8       2
2 B213      10      10
3 C312      10      10
4 C421       9       9