R-在重复的序列中查找缺少的元素

时间:2018-08-31 17:58:38

标签: r missing-data

您如何查找应该(可预测地)存在于数据框中但不存在的条目?我可能遇到的琐碎问题类似于this question,但又多了一层或两层-我尝试过的每个解决方案都无法克服集合中的重复和不规则性。

# Over some years, with a few skipped...
yrs <- 1985:2018 
yrs <- yrs[-sample(1:length(yrs),5)]
# at a number of plots, replicated over two transects...
pts <- letters[1:10]
lns <- c('N','S')
# a study was done (data fields omitted):
yrsr <- rep(yrs, each= length(lns)*length(pts))
lnsr <- rep(rep(lns, each=length(pts)), times=length(yrs))
ptsr <- rep(rep(pts, times=length(lns)), times=length(yrs))
study <- data.frame(YEAR=yrsr, LINE=lnsr, PLOT=ptsr)
## But for random reasons certain plots got left out.
studym <- study[-sample(1:nrow(study), 23),]
# NB: The number of entries per plot varies:
studym$SPEC <- sample(c(1,1,1,1,1,2,2,2,3), nrow(studym), replace=TRUE)
studyAll <- studym[rep(row.names(studym), studym$SPEC),]

丢失的图可能是合法的零或数据输入错误或其他原因;需要对其进行跟踪,然后将其更正或作为NA插入。因此,要在原始数据表上找到它们,我需要一个列表...... studyAll中不存在的所有元素...从我这里的运行来看,类似

# 1985 N d
# 1985 N g
# ...
# 2017 S g

但是因为它们不存在,所以我很难弄清楚要问什么,从哪里来。我还无法找出任何联接来完成我想要的事情。我得到了一个诱人的摘要:

studyAll %>% group_by(YEAR, LINE) %>% count(PLOT) %>% apply(2, table)

但这只是告诉我我遇到的每个问题有多少,而不是在哪里找到。

(奖金Feeb问题:有没有一种方法可以更直接地从studyyrspts构造lns,而无需rep()的那三行我认为必须有某种方法可以生成像这样的简单层次结构,但是找不到它。)

1 个答案:

答案 0 :(得分:1)

在析因设计中查找丢失数据的一种方法是生成 studyAll的YEAR,LINE和PLOT的所有组合,然后找到 所有组合与研究中记录的观察值之间的差异所有数据。框架 通过anti_join。

"+22"
相关问题