Dataframe 检查在特定时间范围内是否缺少日期

Dataframe 检查在特定时间范围内是否缺少日期,dataframe,Dataframe,以下数据集: Name Year more columns A 2000 A 2001 A 2002 A 2003 B 2000 B 2001 B 2003 C 2001 C 2002 .... library(data.table) DT = rbind(use.names = FALSE, data.table(Name = "A", Year = (y <-

以下数据集:

 Name   Year   more columns
 A      2000
 A      2001
 A      2002
 A      2003
 B      2000
 B      2001
 B      2003
 C      2001
 C      2002
 ....

library(data.table)
DT = rbind(use.names = FALSE, 
  data.table(Name = "A", Year = (y <- 2000:2003)), 
  data.table("B", y[-3]), 
  data.table("C", y[-c(1,4)]))
Name年份更多列
A 2000
A 2001年
A 2002年
A 2003年
B 2000
B 2001年
B 2003年
C 2001年
C 2002年
....
库(数据表)
DT=rbind(use.names=FALSE,

data.table(Name=“A”,Year=(y这里有一个使用base R的简单方法:

aggregate(Year ~ Name, df, FUN = function(x) all(2000:2003 %in% x))

  Name  Year
1    A  TRUE
2    B FALSE
3    C FALSE

另一种可能是对所有可能组合的交叉连接使用反连接:

library(data.table)
DT[, CJ(Name = Name, Year = Year, unique = TRUE)][!DT, on = .(Name, Year)]

这将显示缺少的项目。

您不能只检查每组中的行数吗?为了避免多次键入colnames…
DT[,do.call(CJ,c(.SD,(.unique=TRUE))[!.SD,on=names(.SD)],.SDcols=c(“Name”,“Year”)]
不要认为使用
数据会更复杂。table
,例如
DT[,all(2000:2003%年),by=Name]
(如果OP已经有一个data.table)
   Name Year
1:    B 2002
2:    C 2000
3:    C 2003