【问题标题】:Rstudio: Apply a formula/argument to all rows of an r objectRstudio:将公式/参数应用于 r 对象的所有行
【发布时间】:2021-08-15 16:18:28
【问题描述】:

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

基本上,我有一个名为 'dates' 的 R 对象,带有 42264 obs。 1 个变量(这些都是日期,格式为 YYYY-MM-DD HH:MM:SS,我通过包 lubridate 创建)。我有另一个名为 'observation' 的 R 对象,共有 274 个 obs。 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 

【问题讨论】:

  • 您好,您可以分享您的数据的子样本,以便更轻松地为您提供适当的答案
  • 你好。谢谢!对象“日期”:小标题:42,264 x 1 日期 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 # ... 还有 42,258 行对象“观察”一个小标题:274 x 2 开始结束 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 # ... 还有 271 行

标签: r function loops apply


【解决方案1】:

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

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

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

【讨论】:

  • 你好。谢谢您的回答。实际上,我想要的是对象“日期”最终不会包含在对象“观察”的不同时间段之间找到的任何日期。例如删除 2018-05-29 16:56:00 2018-05-29 18:16:00 之间的所有日期,以及 2018-05-30 15:37:00 2018-05-30 16:57 之间的所有日期:00 等所有 274 个时间段(行)。 this:observation_dates
猜你喜欢
  • 2016-09-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
  • 2016-08-11
  • 2017-04-27
相关资源
最近更新 更多