用于特定行的循环

时间:2017-06-30 16:08:41

标签: r for-loop grep

如何从特定LOB中删除数据框(如下所示)中的某些作业?例如。我想在LOB4中保留技术经理,而我在LOB2中不需要技术销售。当我执行下面的代码时,它会从整个数据框中删除标题。

有没有办法做到这一点?

LOB     Title
LOB1    sales rep
LOB2    technology sales
LOB2    receptionist
LOB3    Web Designer
LOB4    Technology Manager



 for (i in c("(?=.*technology)", "(?=.*designer)")) {

    del <- grepl(i, data[data$LOB == "LOB1" | data$LOB == "LOB2",2], perl = T, ignore.case = T)

    data <- data[!del, ]
 }

1 个答案:

答案 0 :(得分:0)

这可能不起作用,因为grepl语句返回长度为3的向量,然后用于将data.frame与5行进行子集化。也可能不需要for循环,以下任何一项都会降低LOB2中的技术销售额:

data[!grepl("(?=.*(technology|designer))", data$Title, perl = TRUE), ]
data[!data$Title == "technology sales", ]
data[!data$Title %in% c("technology sales", "job2 to drop"), ]
data[-2, ]