基于r

问题描述 投票:0回答:3

所以我有一个类似的数据框架:

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)
    
r if-statement dplyr grepl
3个回答
2
投票
我会建议这种方法。最好使用

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

2
投票

使用

stringr
软件包的整形解决方案。

library(stringr) df$Occupation<- str_replace_all(df$Occupation,".*ELECTRICIAN.*","ELECTRICIAN")
关于整理解决方案是否是“首选”的辩论,但我个人更喜欢它们。我认为功能名称对您和可能正在阅读您的代码的人都更加直观。我还认为这是简洁明了的,正是您想做的。
    


1
投票
grep

您可以在存在的地方获取index,然后替换这些值。

Occupation

能力故障?我们的紧急dubai dubai ther 24/7全天候拨打电话,以满足您的所有紧急电气需求。快速,可靠和高效的服务。
    


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.