我正在尝试加快某些过程,因此我不必每次都手动编辑年份。我当然不是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?
答案 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))
}