我有一个数据库(根据dplyr原理构建),概述了文献数据库。其中一列是"语言",另一列是"标记",一个已弃用的列我想清理,因为它包含多个信息。它还包含"语言"信息。
每个图书条目的语言都在"标记"条目(以及其他信息,以逗号分隔)。如何复制" tag"中包含的每个语言字符串?到相应的语言列(当前为空)。
即,我该怎么做"如果标签栏包含字符串"英语"然后移动"英语"到专栏"语言"?
答案 0 :(得分:0)
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
答案 1 :(得分:0)
您可以使用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>