簡體   English   中英

比較R中各列之間的名稱

[英]Compare names between columns in R

我所看到的數據或多或少是這樣的:

data1 <- data.frame(col=c("Peter i.n.","Victor Today Morgan","Obelix","One More"))
data2 <- data.frame(num=c(123,434,545,11,22),col=c("Victor Today","Obelix Mobelix is.",
                    "Peter Asterix i.n.","Also","Here"))

我想在兩個數據框中匹配名稱,並將num列放入data1中。

期望的結果:

                   col  num
 1          Peter i.n.  545
 2 Victor Today Morgan  123
 3              Obelix  434 

我已經嘗試過了,但是沒有按預期工作。

filter <- sapply(as.character(data1$col), function(x) any(grepl(x,as.character(data2$col))))
data1$num <- data2[filter,]
firstName <- function(x) sub(" .*", "", x)
data1$num <- data2$num[match(firstName(data1$col), firstName(data2$col))]
data1[!is.na(data1$num),]

如果您不介意希望查看哪個col名( data1data2 ),則可以通過以下方式利用自己的解決方案:

data2[as.logical(sapply(gsub(" .*", "", as.character(data2$col)), function(x) any(grepl(x, as.character(data1$col))))), ]

##   num                col
## 1 123       Victor Today
## 2 434 Obelix Mobelix is.
## 3 545 Peter Asterix i.n.

這會將data2$col中的第一個單詞與data1$col匹配,並從data2檢索正確的條目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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