0

我正在分析学校的旷工数据,并寻求一些帮助。对于每一天,我有 360 行(教室),其中包含当天(第 1 列)缺勤(第 2 列)和非缺勤学生(第 3 列)的数量。

有些日子(节假日)只有 20 个班级报告,因为其他 340 个班级没有班级。我想从我的数据集中消除这些行。换句话说,我想消除

类,并希望从我的数据集中消除所有条目,其中该日期的条目总数小于某个数量。换句话说,如果包含日期 x 的总行数小于 200,我想消除所有带有日期 x 的行。

这是我到目前为止所得到的:

for (i in c(min(df$date):max(df$date))){
  b <- df[df$date == i,]
  z <- as.vector(ifelse(nrow(b[which(b$date==i),]) <200, "FALSE", "TRUE"))
  print(z)
  df$newcolumn <- z
}

这会打印 z,它会逐日告诉我那一天是否符合我的条件,但我无法找到将 z 重新合并到数据框的 10000 行中的方法。相反,我的 df$newcolumn 只是由所有 TRUE 填充。

任何帮助将不胜感激。

4

1 回答 1

1

没有可重复的例子很难真正做到,但是像这样的东西不df[ ! df$date %in% z, ]工作吗?

%in%将返回每个元素是否存在于另一个向量中的逻辑向量,!否定因此如果它> 200则返回 TRUE,并[ rowselector,]从 data.frame 中选择行。

于 2013-09-02T21:04:14.267 回答