我正在使用R,并尝试根据现有列中的字符串信息创建一个新列。
我的数据就像:
risk_code | area ----------------------------------- DEEP DIGGING ALL | -- CONSTRUCTION PRO | Construction CLAIMS ONSHORE | -- OFFSHORE CLAIMS | --
我需要的结果是:
risk_code | area | area_new ------------------------------------------------- DEEP DIGGING ALL | -- | Digging CONSTRUCTION PRO | Construction | Construction CLAIMS ONSHORE | -- | Onshore OFFSHORE CLAIMS | -- | Offshore
我了解我在代码中犯了一些错误,但是在盯着它看了整整一周并进行互联网搜索之后,我无法获得所需的结果。 我感谢您的帮助。 预先感谢。
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)
答案 0 :(得分:1)
我们可以使用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"
答案 1 :(得分:1)
所以,这就是答案(感谢Sotos):
f . (g x) = f (g x)