Для удобства я собираюсь предположить, что у вас есть схема вложенности.Итак, скажем, Trees
вложены в Stumps
, Stumps
в Plots
и Plots
в Stands
.Я также предположил, что проблема, которую вы пытаетесь решить, состоит в том, что некоторые деревья прикреплены к одному и тому же пню, что означает, что проблемные записи - это те, где идентификаторы Stand
/ Plot
/ Stump
повторяются для разных TreeNumber
s
То, что я сделал, было:
- Упорядочить данные
- Оберните слегка настроенную функцию вокруг
duplicated()
- Используйте
ddply()
(вplyr
пакет) для разделения и анализа ваших данных - Распечатайте проблемные записи
Заказ данных
Я заказал сначала по Stand
, затемPlot
и, наконец, StumpNumber
sampleOrdered <- sample[order(sample$Stand, sample$Plot, sample$StumpNumber)]
Завершение моей собственной duplicated()
функции
Если предположить, что некоторые деревья прикреплены к одному пню, мы можем написать следующеефункция:
findTreesAttachedToTheSameStump <- function(data) {
x <- duplicated(data[ , "StumpNumber"])
data[x, ]
}
Эта функция будет отбирать и возвращать (неявно) все записи, прошедшие тест duplicated()
.
Используя ddply
Я сделал немного split-apply-Объединить здесь.Я приказываю ddply
разбить набор данных на Stand
и Plot
(поскольку ваши данные вложены, и StumpNumber
может быть уникальным только в пределах графика).Затем я применяю функцию, которую мы создали выше:
sampleDuplicated <- ddply(sampleOrdered, .(Stand, Plot), findTreesAttachedToTheSameStump)
Распечатка проблемных пней
Теперь все, что нам нужно сделать, это вызвать sampleDuplicated
, который содержит записи для каждого графика /Повторяющаяся комбинация «подставка / пень».