Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R使用向量中的项过滤循环中的数据_R - Fatal编程技术网

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

R使用向量中的项过滤循环中的数据,r,R,我正试图加快一些进程,这样我就不必每次都手动编辑年份。我当然不是R方面的专家,不确定这是否太容易问。它似乎适用于向量中的第一项,因为结果是正确的 我想打印过滤数据集中每年的行数。 图书馆弹琴 getData <- function(){ data <- read.csv("data.csv", stringsAsFactors=FALSE) } data <- getData() years <- c("2010", "2011", "2012", "2013",

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

我想打印过滤数据集中每年的行数。 图书馆弹琴

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))
}

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

您可能可以修改它以适应您的账单

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

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

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

如果不知道您的数据是什么样子,这将很难回答。你能提供一个吗?@BLT我认为这与数据本身无关,但更多的是关于循环和数据本身的过滤。这适用于所使用的任何数据集。不幸的是,我不允许分享任何信息data@dnsko,我也不允许分享我公司的任何数据。但您可以创建一个伪数据集,该数据集的信息类型与您的数据集相同,但不是专有的。看看我对这个问题做了什么:我不能代表每个人说话,但我个人更喜欢模拟数据。通过一个可重复的例子,这可以在几秒钟内解决。还要注意的是,您不需要定义函数来完成任务。只需执行data@dnsko您可能是对的,数据没有错,但是如果没有一些数据来运行代码,就很难确定发生了什么错误。没错。。我想一定是出了什么问题,因为第一个是好的。谢谢
for(year in years){
  data_temp <- filter(data, grepl(year, Created.Date) & grepl(nbh, SomeColumn))
  print(nrow(data_temp))
}