【问题标题】:For loop for specific rows特定行的for循环
【发布时间】:2017-06-30 16:08:40
【问题描述】:

如何从特定 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, ]
 }

【问题讨论】:

  • “不需要 LOB1 的技术销售” - “技术销售”与 LOB2 连续。你是那个意思吗?请确认或修改。
  • 正确。感谢您指出这一点

标签: r for-loop grepl


【解决方案1】:

这可能不起作用,因为grepl 语句返回一个长度为三的向量,然后使用该向量对具有五行的data.frame 进行子集化。也可能不需要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, ]

【讨论】:

  • 感谢您的回复。我只是举了一个我正在尝试做的例子。我使用 for 循环的原因是因为我的数据库有超过 100 万个作业,而我需要排除的关键字列表约为 500。我一直在使用此代码来执行整个数据框的代码,并且运行良好。但是我也需要对一些特定的记录做同样的事情。我也可以拆分数据框,执行 for 循环,然后再次组合数据,但我在想有更方便的方法可以做到这一点。希望这是有道理的。
猜你喜欢
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 2017-05-24
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多