首页 > 解决方案 > Rstudio:将公式/参数应用于 r 对象的所有行

问题描述

在尝试了很多方法之后,我来这里问一个关于 Rstudio 的问题。

基本上,我有一个名为“日期”的 R 对象,带有 42264 obs。1 个变量(这些都是日期,格式为 YYYY-MM-DD HH:MM:SS,我通过包 lubridate 创建)。我有另一个名为274 obs的“观察”的 R 对象。2 个变量(也是相同格式的日期,第一列命名为'Start',第二列命名为'End',因为它们代表一个时间范围)。我想做的是从对象“日期”中排除在“观察”时间段内找到的所有日期。我发现以下论点似乎工作正常(有点):

nouvelles_dates<-dates[!(dates$Date %in% observation$Start:observation$End),]

但是,我的问题是这个论点只适用于“观察”中的第一行(时间段),而我希望它适用于所有 274 行。

我收到以下错误消息:

#Error in 1:observation : NA/NaN argument
#In addition: Warning messages:
#1: In observation$Start:observation$End :
#  numerical expression has 274 elements: only the first used

我尝试创建循环,以便将参数应用于“观察”中的所有行,我尝试通过参数 for() 和 apply() 但它们似乎不起作用。也许是我的错误应用了这个论点。您对我如何解决这个问题有任何想法吗?

我的数据的子样本:对象“日期”:

A tibble: 42,264 x 1 
Date <dttm> 
1 2018-05-29 08:00:00 
2 2018-05-29 08:01:00 
3 2018-05-29 08:02:00 
4 2018-05-29 08:03:00 
5 2018-05-29 08:04:00 
6 2018-05-29 08:05:00 
# ... with 42,258 more rows 

对象“观察”

A tibble: 274 x 2 
Start End 
<dttm> <dttm> 
1 2018-05-29 16:56:00 2018-05-29 18:16:00 
2 2018-05-30 15:37:00 2018-05-30 16:57:00 
3 2018-05-31 03:07:00 2018-05-31 04:27:00 
# ... with 271 more rows 

标签: rfunctionloopsapply

解决方案


试试这个......希望我能正确理解你的问题。

observation_dates <- c(observations$Start, observations$End)

required_rows <- dates[which(!dates$Date %in% observation_dates),]


推荐阅读