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