如何解决我可以根据R中的位置拆分字符向量吗?
这是我的第一篇文章,因此所有发布技巧均会有所帮助:)
我想合并两个具有相同人员ID的数据帧,但标识符彼此之间(在系统上)略有不同。
- 在df
A
中,ID
是: - 在df
B
中,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)
B <- data.frame(B_ID,B_score)
colnames(B) <- c("ID","B_score")
问题在于,由于df -
标识符中间的B
,这些df不会合并。
我要实现的是将dfs合并(fulljoin
)以形成列:ID
| A_score
| B_score
。
我尝试将字符向量转换为字符串,然后在字母后的字符位置2拆分ID
(A
),添加-
,然后粘贴并转换回字符向量。但是我觉得这可能不是最有效,最简单的方法。
谢谢!
解决方法
使用<figure class="color-overlay">
<img src="https://ozanilbey.com/images/identity/icon.png" />
<figcaption>Color Overlay</figcaption>
</figure>
来尝试清理第二个id变量,然后将数据帧合并到一个数据管道中。下面是使用gsub()
函数的代码:
tidyverse
输出:
library(tidyverse)
#Code
NewA <- A %>% full_join(B %>% mutate(ID=gsub('-','',ID)))
,
使用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。