基于字符串的R数据帧的条件变异
我正在使用R并尝试根据现有列中的字符串信息创建一个新列 我的数据如下: 我需要的结果是: 我知道我在代码中犯了好几个错误,但在花了整整一周的时间盯着代码和网络搜索之后,我无法得到我需要的结果。 我感谢你的帮助。 提前谢谢基于字符串的R数据帧的条件变异,r,dplyr,R,Dplyr,我正在使用R并尝试根据现有列中的字符串信息创建一个新列 我的数据如下: 我需要的结果是: 我知道我在代码中犯了好几个错误,但在花了整整一周的时间盯着代码和网络搜索之后,我无法得到我需要的结果。 我感谢你的帮助。 提前谢谢 Occupancy <- read_excel("Occupancy.xlsx") OccupancyMutated <- mutate(Occupancy, area_new = area) OccupancyMutated <- as.data.fram
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)
占用我们可以使用stringr
进行此操作。函数word
将提取risk\u code
中每个字符串的第一个单词,函数str\u to\u 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"
这就是答案(多亏了Sotos):
谢谢你的回答。不幸的是,它并不总是第一个词。我将更改我的示例以使其更清楚。已编辑。请看一看并让我知道,因为您正在使用tolower
,请确保您要查找的模式(在您的案例中提取|离岸|陆上
)也用小写字母书写
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"
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)