R使用向量中的项目在循环中过滤数据

时间:2017-01-29 21:05:11

标签: r

我正在尝试加快某些过程,因此我不必每次都手动编辑年份。我当然不是R的专家,不确定这是否太容易问。它似乎适用于向量中的第一项,因为结果是正确的。

我想在每年的过滤数据集中打印行数。 库(dplyr)

getData <- function(){
  data <- read.csv("data.csv", stringsAsFactors=FALSE)
}

data <- getData()
years <- c("2010", "2011", "2012", "2013", "2014", "2015", "2016")
nbh <- "SomeVar"

for(year in years){
  data <- filter(data, grepl(year, Created.Date) & grepl(nbh, SomeColumn))
  print(nrow(data))
}

然而,它只输出这个,第一个是正确的:

[1] 2
[1] 0
[1] 0
[1] 0
[1] 0
[1] 0
[1] 0

这是因为它第一次过滤数据,然后只有两条记录,导致下一条记录为0?

2 个答案:

答案 0 :(得分:2)

你可以修改它以适合你的账单。

library(dplyr)

xy <- data.frame(letters = sample(letters, 100, replace = TRUE),
                 years = sample(seq(from = 2010, to = 2015, by = 1), size = 100, replace = TRUE),
                 values = rnorm(100))

xy %>%
  group_by(years) %>%
  filter(letters %in% c("a", "b", "c")) %>%
  count()

# A tibble: 6 × 2
  years     n
  <dbl> <int>
1  2010     5
2  2011     2
3  2012     3
4  2013     1
5  2014     1
6  2015     3

答案 1 :(得分:1)

您正在for循环中覆盖数据集。尝试

for(year in years){
  data_temp <- filter(data, grepl(year, Created.Date) & grepl(nbh, SomeColumn))
  print(nrow(data_temp))
}