簡體   English   中英

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

[英]Can I split character vector based on position in R?

這是我的第一篇文章,所以所有發帖技巧都有幫助:)

我想合並兩個具有相同個人 ID 的數據框,但標識符彼此之間略有(但系統地)不同。

  • 在 df AID是:<3 位數字>
  • 在 df BID是:-<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM