在字符匹配和年份之后对语句进行子字符串化
Substring a statement after character matching and year
我正在尝试从我的数据集中提取基于年份的某些行,此外,我想对符合以下条件的那些行进行子字符串化,对于 2017 年,我想对语句中第二个“-”之前的部分进行子字符串化例如:“17Q4-EMEA-All-SOV-OutR-Sov_Score-18Dec.Email”我只想要 "All-SOV-OutR-Sov_Score-18Dec.Email",对于 2018 年,我想删除“.”之后的部分。例如:“IVP 程序模板.IVP 电子邮件模板”我想要“IVP 程序模板”
我试过使用
data$col <- sub(".*:", "", data$`Email Name`)
data$col2 <- substring(data$`Email Name`, regexpr(".", data$`Email Name`) + 1)
但是 none 它正在工作并且 returns 语句原样,也用于基于年份的过滤我尝试使用过滤功能
filter(data, as.Date(data$
首先 Activity (EDT)) = "2017")
但它给我语法错误
我的数据集是这样的:
这是应该为您提供 2017 年值所需结果的正则表达式:
sub(".*?-.*?-", "", "17Q4-EMEA-All-SOV-OutR-Sov_Score-18Dec.Email")
# "All-SOV-OutR-Sov_Score-18Dec.Email"
2018 年价值观:
sub("\..*", "", "IVP Program Template.IVP Email Template")
# IVP Program Template
然后您可以使用 ifelse
:
应用正则表达式函数
library(lubridate)
data$email_adj <- NA
data$email_adj <- ifelse(year(mdy(data$`First Activity (EDT)`)) %in% "2017", sub(".*?-.*?-", "", data$`Email Name`), data$email_adj)
data$email_adj <- ifelse(year(mdy(data$`First Activity (EDT)`)) %in% "2018", sub("\..*", "", data$`Email Name`), data$email_adj)
如果您想按月而不是年过滤,请使用 year
函数的 month
instaed(在示例中我只选择了从四月到七月的月份):
library(lubridate)
data$email_adj <- NA
data$email_adj <- ifelse(month(mdy(data$`First Activity (EDT)`)) %in% 4:7, sub(".*?-.*?-", "", data$`Email Name`), data$email_adj)
data$email_adj <- ifelse(month(mdy(data$`First Activity (EDT)`)) %in% 4:7, sub("\..*", "", data$`Email Name`), data$email_adj)
我正在尝试从我的数据集中提取基于年份的某些行,此外,我想对符合以下条件的那些行进行子字符串化,对于 2017 年,我想对语句中第二个“-”之前的部分进行子字符串化例如:“17Q4-EMEA-All-SOV-OutR-Sov_Score-18Dec.Email”我只想要 "All-SOV-OutR-Sov_Score-18Dec.Email",对于 2018 年,我想删除“.”之后的部分。例如:“IVP 程序模板.IVP 电子邮件模板”我想要“IVP 程序模板”
我试过使用
data$col <- sub(".*:", "", data$`Email Name`)
data$col2 <- substring(data$`Email Name`, regexpr(".", data$`Email Name`) + 1)
但是 none 它正在工作并且 returns 语句原样,也用于基于年份的过滤我尝试使用过滤功能
filter(data, as.Date(data$
首先 Activity (EDT)) = "2017")
但它给我语法错误
我的数据集是这样的:
这是应该为您提供 2017 年值所需结果的正则表达式:
sub(".*?-.*?-", "", "17Q4-EMEA-All-SOV-OutR-Sov_Score-18Dec.Email")
# "All-SOV-OutR-Sov_Score-18Dec.Email"
2018 年价值观:
sub("\..*", "", "IVP Program Template.IVP Email Template")
# IVP Program Template
然后您可以使用 ifelse
:
library(lubridate)
data$email_adj <- NA
data$email_adj <- ifelse(year(mdy(data$`First Activity (EDT)`)) %in% "2017", sub(".*?-.*?-", "", data$`Email Name`), data$email_adj)
data$email_adj <- ifelse(year(mdy(data$`First Activity (EDT)`)) %in% "2018", sub("\..*", "", data$`Email Name`), data$email_adj)
如果您想按月而不是年过滤,请使用 year
函数的 month
instaed(在示例中我只选择了从四月到七月的月份):
library(lubridate)
data$email_adj <- NA
data$email_adj <- ifelse(month(mdy(data$`First Activity (EDT)`)) %in% 4:7, sub(".*?-.*?-", "", data$`Email Name`), data$email_adj)
data$email_adj <- ifelse(month(mdy(data$`First Activity (EDT)`)) %in% 4:7, sub("\..*", "", data$`Email Name`), data$email_adj)