![](/img/trans.png)
[英]How to split a character element to create a vector based on \n position
[英]Can I split character vector based on position in R?
這是我的第一篇文章,所以所有發帖技巧都有幫助:)
我想合並兩個具有相同個人 ID 的數據框,但標識符彼此之間略有(但系統地)不同。
A
, ID
是:<3 位數字>B
, ID
是:-<3 位數字>請參閱下面的示例:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.