根据给定值过滤数据帧

时间:2015-05-28 12:43:17

标签: r dataframe

empdata是一个数据框,如下所示:

employee <- c('John','Peter','Jolie')
salary    <- c(10000, 20000, 30000)
startdate <- as.Date(c('2010-11-1','2010-11-25','2011-10-14'))
empdata <- data.frame(employee, salary, startdate)

我想在empdata中提取日期在[startdate]和[enddate]之间的总行数。例如,如果startdate = 2010-11-1和enddate = 2010-11-30,那么我想要answer = 2.

3 个答案:

答案 0 :(得分:2)

我认为这应该可以帮到你

NROW(empdata[(empdata$startdate >= "startdate" & empdata$startdate <= "enddate"),])

这将为您提供过滤数据框中的行数。

答案 1 :(得分:1)

您可以尝试:

mystartdate = '2010-11-01'
mystopdate = '2010-11-30'

empdata[empdata$startdate > mystartdate & empdata$startdate < mystopdate,]

答案 2 :(得分:1)

dplyr可以轻松有效地完成这些工作(适用于较大的数据集)。 在这里:

library(dplyr)
mystartdate = '2010-11-1'
mystopdate = '2010-11-30'
# First filter you dataframe, then count the number of rows
nrow(filter(empdata, startdate >= mystartdate & startdate <= mystopdate))

注意:我想从你的帖子中可以看出它应该包括所提到的日期(因为所需的答案是2)。请务必根据您的需要检查操作员。