所以我有一个类似的数据框架:
Occupation
ELECTRICIAN
ROAD ELECTRICIAN
ELECTRICIAN
FARMER
GRASS ELECTRICIAN
POLE ELECTRICIANS
ELECTRICIAN
INSPECTOR
因此,我希望任何时候电工都只是电工,无论牢房中有什么其他事情。
最终产品应该是:
Occupation
ELECTRICIAN
ELECTRICIAN
ELECTRICIAN
FARMER
ELECTRICIAN
ELECTRICIAN
ELECTRICIAN
INSPECTOR
我尝试了以下内容,但这无效....
ifelse(grep('CONDUCTOR',df$Occupation , value=TRUE), "CONDUCTOR",df$Occupation)
grepl()
,因为它会产生逻辑值,这些逻辑值可以很容易地在
ifelse()
中检测到::
#Data
df <- structure(list(Occupation = c("ELECTRICIAN", "ROAD ELECTRICIAN",
"ELECTRICIAN", "FARMER", "GRASS ELECTRICIAN", "POLE ELECTRICIANS",
"ELECTRICIAN", "INSPECTOR")), row.names = c(NA, -8L), class = "data.frame")
代码:
#Code
df$Occupation <- ifelse(grepl('ELECTRICIAN',df$Occupation), 'ELECTRICIAN',df$Occupation)
输出:
Occupation
1 ELECTRICIAN
2 ELECTRICIAN
3 ELECTRICIAN
4 FARMER
5 ELECTRICIAN
6 ELECTRICIAN
7 ELECTRICIAN
8 INSPECTOR
使用
stringr
软件包的整形解决方案。
library(stringr)
df$Occupation<- str_replace_all(df$Occupation,".*ELECTRICIAN.*","ELECTRICIAN")
关于整理解决方案是否是“首选”的辩论,但我个人更喜欢它们。我认为功能名称对您和可能正在阅读您的代码的人都更加直观。我还认为这是简洁明了的,正是您想做的。
grep
您可以在存在的地方获取index,然后替换这些值。
Occupation
能力故障?我们的紧急dubai dubai ther 24/7全天候拨打电话,以满足您的所有紧急电气需求。快速,可靠和高效的服务。