我可以根据 R 中的位置拆分字符向量吗?
Can I split character vector based on position in R?
这是我的第一个 post,所以 posting 的所有提示都很有帮助 :)
我想合并两个具有相同 person-ID 的数据框,但标识符彼此略有(但系统地)不同。
- 在 df
A
中 ID
是:<3 位数字>
- 在 df
B
中 ID
是:-<3 digits>
参见下面的示例:
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
这是我的第一个 post,所以 posting 的所有提示都很有帮助 :)
我想合并两个具有相同 person-ID 的数据框,但标识符彼此略有(但系统地)不同。
- 在 df
A
中ID
是:<3 位数字> - 在 df
B
中ID
是:-<3 digits>
参见下面的示例:
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