R 基于给定值筛选数据帧

R 基于给定值筛选数据帧,r,dataframe,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) employee您可以尝试: mystartdate =

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)
employee您可以尝试:

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

empdata[empdata$startdate > mystartdate & empdata$startdate < mystopdate,]
mystartdate='2010-11-01'
mystopdate='2010-11-30'
empdata[empdata$startdate>mystartdate&empdata$startdate
我认为这应该对您有所帮助

NROW(empdata[(empdata$startdate >= "startdate" & empdata$startdate <= "enddate"),])
NROW(empdata[(empdata$startdate>=“startdate”&empdata$startdate该软件包可以轻松高效地完成这类工作(适用于较大的数据集)。
在这里:

库(dplyr)
mystartdate='2010-11-1'
mystopdate='2010-11-30'
#首先筛选数据帧,然后计算行数

nrow(filter(empdata,startdate>=mystartdate&startdate使用
data.table
(如果下面提供的答案是您想要的);
setDT(empdata)[between(startdate,startdate,endDate),.N]
根据您提供的数据,我得到的结果是
2
setDT(empdata)[between(startdate,startdate,endDate),.N]#[1]2
考虑到
startDate
endDate
也是日期类,我不知道您这方面的问题。我使用的是data.table的devel版本。我认为下面三种解决方案中的任何一种都应该有效,但不需要测试(并用实际的日期对象替换引用的字符串)请不要删除您的问题。它不会返回1吗?它不应该是
=
(如果希望的答案是OP所述的2)?我不认为在这个日期使用start/enddateRun POSIXt的字符表示会起作用。你不明白我的意思。关于你的评论,
方法调度将处理这一部分。没关系。我做了…当你把条件放进去时,我使用了日期作为字符串。使用它作为POSIXt中键入的类型转换。这应该是
 mystartdate='2010-11-01';mystopdate='2010-11-30'
,然后它们应该表示为
mystartdate
,而不是
“mystartdate”
。因为
“mystartdate”
只是一个字符串,而不是一个存储变量。
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))