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