首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于字符串的R数据帧的条件变异

基于字符串的R数据帧的条件变异
EN

Stack Overflow用户
提问于 2019-09-03 12:05:30
回答 2查看 66关注 0票数 1

我正在使用R,并试图根据现有列中的字符串信息创建一个新列。

我的数据是:

risk_code区

我需要的结果是:

深度挖掘所有的土地-挖洞施工专业施工索赔-施工索赔-在岸上的施工索赔-在岸的离岸索赔-离岸索赔

我知道我在代码中犯了几个错误,但是经过整整一周的盯着它和网络搜索,我无法得到我需要的结果。谢谢你的帮助。提前谢谢。

代码语言:javascript
复制
Occupancy <- read_excel("Occupancy.xlsx")

OccupancyMutated <- mutate(Occupancy, area_new = area)
OccupancyMutated <- as.data.frame(OccupancyMutated)

OccupancyMutated$area_new[Occupancy$area == "--"] <- 
{ 
  if (OccupancyMutated$risk_code == %Digging%) {"Digging"}
else if (OccupancyMutated$risk_code == %ONSHORE%) {"Onshore"}
else if (OccupancyMutated$risk_code == %OFFSHORE%) {"Offshore"}
  else {"empty"}
}
View(OccupancyMutated)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-03 12:16:40

我们可以在这个操作中使用stringr。函数word将提取risk_code中每个字符串的第一个单词,而函数str_to_title将转换为所需的格式。这两个函数都是矢量化的,

代码语言:javascript
复制
library(stringr)

str_to_title(word(df$risk_code, 1, 1))
#[1] "Digging"      "Construction" "Onshore"      "Offshore" 

如果它并不总是第一个单词,而且你只需要为特定的单词做,你可以做到,

代码语言:javascript
复制
str_to_title(str_extract(tolower(df$risk_code), 'digging|offshore|onshore'))
#[1] "Digging"  NA         "Onshore"  "Offshore" 
票数 1
EN

Stack Overflow用户

发布于 2019-09-03 13:12:05

所以,这就是答案(多亏了Sotos):

代码语言:javascript
复制
Occupancy <- read_excel("Occupancy.xlsx")

OccupancyMutated <- mutate(Occupancy, area_new = area)
OccupancyMutated <- as.data.frame(OccupancyMutated)

OccupancyMutated$area_new[Occupancy$area == "--"] <- 
str_to_title(str_extract(tolower(Occupancy$risk_code), 'Extraction|Offshore|Onshore'))

View(OccupancyMutated)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57771423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档