我有一個包含各種單詞的列的資料框。我還有一個單獨的字串串列(與 df 的長度不同),我想在資料框中創建一個新列,該列將字串與列中的單詞相匹配,但只保留字串的一部分直到那個詞。
例如:我有這張表:
| 字 | |
|---|---|
| 蘋果 | |
| 植物 | |
| 香蕉 | |
| 動物 | |
| 飛 | |
| 生態系統 |
和這些字串:
stringlist <- c("eukaryote;plant;apple", "eukaryote;plant;banana","eukaryote;animal;dog", "eukaryote;plant;orange" "eukaryote;animal;cat"; "eukaryote;insect;fly", "prokaryote;bacterium;ecoli")
我想得到這個:
| 字 | 新詞 |
|---|---|
| 蘋果 | 真核生物;植物;蘋果 |
| 植物 | 真核生物;植物 |
| 香蕉 | 真核生物;植物;香蕉 |
| 動物 | 真核生物;動物 |
| 飛 | 真核生物;昆蟲;飛 |
| 生態系統 | 原核生物;細菌;大腸桿菌 |
我已經嘗試了一些類似的東西:
df$words <- c("apple", "plant", "banana", "animal", "fly", "ecoli")
df$new_words<- sub(df$words, "", stringlist)
uj5u.com熱心網友回復:
回圈遍歷 'words' 列,使用 獲取匹配的 'stringlist' 值grep,用于sub捕獲包含單詞的字符并將其替換\\1為捕獲組的反向參考 ( )
df$new_words <- sapply(df$words, function(x)
sub(sprintf("(.*%s).*", x), "\\1", grep(x, stringlist,
value = TRUE)[1]))
-輸出
> df
words new_words
1 apple eukaryote;plant;apple
2 plant eukaryote;plant
3 banana eukaryote;plant;banana
4 animal eukaryote;animal
5 fly eukaryote;insect;fly
6 ecoli prokaryote;bacterium;ecoli
資料
df <- structure(list(words = c("apple", "plant", "banana", "animal",
"fly", "ecoli")), class = "data.frame", row.names = c(NA, -6L
))
stringlist <- c("eukaryote;plant;apple", "eukaryote;plant;banana",
"eukaryote;animal;dog",
"eukaryote;plant;orange", "eukaryote;animal;cat", "eukaryote;insect;fly",
"prokaryote;bacterium;ecoli")
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/312499.html
標籤:r
下一篇:從字串中提取字母和數字
