这是数据集:
company <- c("Coca-Cola Inc.", "DF, CocaCola",
"COCA-COLA", "PepsiCo Inc.", "Beverages Distribution")
brand <- c("Coca-Cola Zero","N/A", "Coca-Cola", "Pepsi", "soft drink")
vol <- c("2456","1653", "19", "2766", "167")
data <-data.frame(company, brand, vol)
data
这将导致:
company brand vol
1 Coca-Cola Inc. Coca-Cola Zero 2456
2 DF, CocaCola N/A 1653
3 COCA-COLA CocaCola 19
4 PepsiCo Inc. Pepsi 2766
5 Beverages Distribution soft drink 167
比方说,这是按品牌划分的进口量。
任务是对数据框进行设置,以仅查看与可口可乐相关的观察结果,而不是其他任何品牌。
我们需要将COMPANY和BRAND变量与一系列条件(键)进行部分匹配:
company_key <- c("coca-", "cocacola", "coca cola", "beverages distribution")
brand_key <- c("coca-", "cocacola", "coca cola")
我正在努力执行这个想法:
如果品牌部分匹配brand_key向量中的任何键或公司部分匹配company_key中的任何键,则SUBSET数据
因此,仅保留其中的行:
( 品牌 观察值与“ coca-”或“ cocacola”或“ coca cola”部分匹配)
OR
( 公司 观察结果部分匹配“可口可乐”或“可口可乐”或“可口可乐”或“饮料分配”)
注意:需要不区分大小写
理想的输出:
company brand vol
1 Coca-Cola Inc. Coca-Cola Zero 2456
2 DF, CocaCola N/A 1653
3 COCA-COLA CocaCola 19
4 Beverages Distribution soft drink 167
有什么想法吗?在此先感谢:)
答案 0 :(得分:5)
使用正则表达式及其react-scripts eject
(或)运算符。参数|
处理大小写。
ignore.case
答案 1 :(得分:1)
考虑到coca
后面可以加上破折号或可乐,并在其后加上可选空格。我将两列粘贴在一起进行coca
搜索,并对Beverage Distribution
data[grepl("coca-|(\\s*cola)", paste(data[,1], data[,2]), ignore.case = T) |
grepl("Beverages Distribution",data[,1]),]
# company brand vol
# 1 Coca-Cola Inc. Coca-Cola Zero 2456
# 2 DF, CocaCola N/A 1653
# 3 COCA-COLA Coca-Cola 19
# 5 Beverages Distribution soft drink 167
如果Beverage Distribution
只能完全匹配,您可能需要将第二部分更改为data[,1] == "Beverages Distribution"