我正在使用R,并试图根据现有列中的字符串信息创建一个新列。
我的数据是:
risk_code区
我需要的结果是:
深度挖掘所有的土地-挖洞施工专业施工索赔-施工索赔-在岸上的施工索赔-在岸的离岸索赔-离岸索赔
我知道我在代码中犯了几个错误,但是经过整整一周的盯着它和网络搜索,我无法得到我需要的结果。谢谢你的帮助。提前谢谢。
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)发布于 2019-09-03 12:16:40
我们可以在这个操作中使用stringr。函数word将提取risk_code中每个字符串的第一个单词,而函数str_to_title将转换为所需的格式。这两个函数都是矢量化的,
library(stringr)
str_to_title(word(df$risk_code, 1, 1))
#[1] "Digging" "Construction" "Onshore" "Offshore" 如果它并不总是第一个单词,而且你只需要为特定的单词做,你可以做到,
str_to_title(str_extract(tolower(df$risk_code), 'digging|offshore|onshore'))
#[1] "Digging" NA "Onshore" "Offshore" 发布于 2019-09-03 13:12:05
所以,这就是答案(多亏了Sotos):
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)https://stackoverflow.com/questions/57771423
复制相似问题