簡體   English   中英

R:如果包含在另一列中,則將字符串復制到列

[英]R: copy string to column if contained in another column

我有一個數據庫(根據dplyr原理構建),提供了文獻數據庫的概述。 其中一列是“語言”,另一列是“標記”,我想清除它已棄用的列,因為它包含多個信息。 它還包含“語言”信息。

每個書籍條目在“標簽”條目中都有其語言(以及其他信息,以逗號分隔)。 如何將“標簽”中包含的所有這些語言字符串復制到相應的語言列(當前為空)。

即,如何執行“如果標簽列包含字符串“英語”,然后將“英語”移至“語言”列?

db<-data.frame(tags=c("Moose, English", "Feet, French"), language=NA)

db$language<-ifelse(grepl("English", db$tags), "English", db$language)
db$language<-ifelse(grepl("French", db$tags), "French", db$language)

這樣做的缺點是要求您了解標簽列中所有可能的語言。 當您確定所有剩余的語言后,可能要運行此命令:

db$tags[is.na(db$language)]

這將為您提供所有尚未分配語言的情況下的標簽。

更新:稍微簡化的版本將使用帶有所有語言名稱的向量的for循環:

languages<-c("English","French","Spanish"[...])
for (i in 1:length(languages)) {
  db$language<-ifelse(grepl(languages[i], db$tags), languages[i], db$language)
}

兩種選擇都返回

            tags language
1 Moose, English  English
2   Feet, French   French

您可以使用grepl檢查字符串是否包含某些內容。

例如:

tag <- c('Containing English Information', 'Containing unknown information')
testdata <- data.frame(tag)
testdata$language <- ifelse(grepl("English", testdata$tag), "English", NA)
testdata

退貨

                             tag language
1 Containing English Information  English
2 Containing unknown information     <NA>

暫無
暫無

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

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