R 如果需求不是';t遇见

R 如果需求不是';t遇见,r,dataframe,R,Dataframe,我已经使用了相当多的代码,当某些需求没有得到满足时会突出显示,或者告诉我哪些条目是重复的,但是我还没有弄清楚如果一个需求没有得到满足时如何进行编码 我使用的是一个相对平均的数据帧,其中包括日期。通常每天应该有24个条目,即每小时一个条目。但在某些情况下,有更多或更少。我需要一些东西来告诉我哪些条目号/数据不符合24条条目的标准。有人对如何处理这个问题有什么建议吗 我在下面附上了一个到目前为止我一直在使用的代码示例(用于实现其他功能) 在这种情况下,第10个项目的数据有24个条目,但第11个项目只

我已经使用了相当多的代码,当某些需求没有得到满足时会突出显示,或者告诉我哪些条目是重复的,但是我还没有弄清楚如果一个需求没有得到满足时如何进行编码

我使用的是一个相对平均的数据帧,其中包括日期。通常每天应该有24个条目,即每小时一个条目。但在某些情况下,有更多或更少。我需要一些东西来告诉我哪些条目号/数据不符合24条条目的标准。有人对如何处理这个问题有什么建议吗

我在下面附上了一个到目前为止我一直在使用的代码示例(用于实现其他功能)


在这种情况下,第10个项目的数据有24个条目,但第11个项目只有26个条目,第12个项目有23个条目。我需要一些东西来提醒我这个事实,例如,给出日期11/05/1973和12/05/1973(类似于我为缺失值代码生成的输出)。

使用
dplyr

library(dplyr)
df %>% 
  group_by(dates = gsub('\\s+.*', '', OB_DATE)) %>% 
  summarise(new = n())
# A tibble: 3 × 2
#       dates   new
#       <chr> <int>
#1 1973-09-05    24
#2 1973-10-05    26
#3 1973-11-05    23

使用
dplyr

library(dplyr)
df %>% 
  group_by(dates = gsub('\\s+.*', '', OB_DATE)) %>% 
  summarise(new = n())
# A tibble: 3 × 2
#       dates   new
#       <chr> <int>
#1 1973-09-05    24
#2 1973-10-05    26
#3 1973-11-05    23

我们可以使用
data.table

library(data.table)
setDT(df)[,  new := as.integer(.N==24), by = .(Date=as.IDate(OB_DATE, "%m/%d/%Y %H:%M"))]
head(df)
#            OB_DATE AIR_TEMPERATURE new
#1: 09/05/1973 00:00            10.0   1
#2: 09/05/1973 01:00            10.2   1
#3: 09/05/1973 02:00            10.0   1
#4: 09/05/1973 03:00            10.0   1
#5: 09/05/1973 04:00             9.9   1
#6: 09/05/1973 05:00             9.9   1

我们可以使用
data.table

library(data.table)
setDT(df)[,  new := as.integer(.N==24), by = .(Date=as.IDate(OB_DATE, "%m/%d/%Y %H:%M"))]
head(df)
#            OB_DATE AIR_TEMPERATURE new
#1: 09/05/1973 00:00            10.0   1
#2: 09/05/1973 01:00            10.2   1
#3: 09/05/1973 02:00            10.0   1
#4: 09/05/1973 03:00            10.0   1
#5: 09/05/1973 04:00             9.9   1
#6: 09/05/1973 05:00             9.9   1

谢谢,鉴于涉及的数据量巨大,您的第一个选项以最简洁的方式提供了信息。我必须添加
as.data.frame
,以便查看每个条目(tibble将其限制为仅10个)-否则它是完美的。谢谢,鉴于涉及的数据量巨大,您的第一个选项以最简洁的方式提供信息。我确实需要添加
as.data.frame
,以便查看每个条目(tibble将其限制为仅10条)-否则它是完美的。
library(data.table)
setDT(df)[,  new := as.integer(.N==24), by = .(Date=as.IDate(OB_DATE, "%m/%d/%Y %H:%M"))]
head(df)
#            OB_DATE AIR_TEMPERATURE new
#1: 09/05/1973 00:00            10.0   1
#2: 09/05/1973 01:00            10.2   1
#3: 09/05/1973 02:00            10.0   1
#4: 09/05/1973 03:00            10.0   1
#5: 09/05/1973 04:00             9.9   1
#6: 09/05/1973 05:00             9.9   1