【发布时间】:2017-06-30 15:34:43
【问题描述】:
我在数据框中有一列定义不明确。例如,我有:
> mydata$column1<-c("abcAppledef","gsApple123hilhj","stBananaewfs","sfesBanana123sfeft",
"stwefPearsfet","stwfePearabcseft","wefCarwefeEef","wefwaCarWFEe","wefaCarEFWefe")
我想通过用通配符替换字符串来重新定义列,结果应该是这样的:
> mydata$column1<-c("Apple","Apple","Banana","Banana","Pear","Pear","Car","Car","Car")
我正在使用
> mydata$column1<-gsub('.*Apple.*','Apple',mydata$column1)
> mydata$column1<-gsub('.*Banana.*','Banana',mydata$column1)
> mydata$column1<-gsub('.*Pear.*','Pear',mydata$column1)
> mydata$column1<-gsub('.*Car.*','Car',mydata$column1)
但我有许多不同类型的模式,我还需要将其应用于多个表。有没有更有效的方法来做到这一点? 也许是一个查找表?
谢谢。
【问题讨论】:
-
你有完整的目标字符串列表吗?例如,
targets = c("Apple", "Banana", "Pear")?如果是这样,我只会更改它们存在的字符串。for (fruit in targets) {x[grep(fruit, x) <- fruit}.
标签: r