Я пытаюсь сопоставить значения в столбце одного кадра данных со значениями в столбце второго фрейма данных. Сложная часть заключается в том, что я хотел бы выполнить сопоставление с использованием подмножеств второго фрейма данных (обозначенного отдельным столбцом во втором кадре данных из того, который сопоставляется). Это отличается от общедоступной проблемы с попыткой подмножества на основе соответствия между кадрами данных.Соответствие значений в столбце одного кадра данных с подмножествами столбца в другом кадре данных
Моя проблема противоположна - я хочу сопоставить кадры данных на основе подмножеств. Чтобы быть конкретным, я хотел бы сопоставить подмножества столбца во втором кадре данных со всем столбцом первого кадра данных и затем создать новые столбцы в первом кадре данных, которые показывают, было ли выполнено совпадение для каждого подмножество.
Эти подмножества могут иметь различное количество строк. С помощью двух фиктивных данных фреймов ниже ...
DF1 <- data.frame(number=1:10)
DF2 <- data.frame(category = rep(c("A","B","C"), c(5,7,3)),
number = sample(10, size=15, replace=T))
... цель будет заключаться в создании трех новых столбцов (DF1$A
, DF1$B
и DF$C
), которые показывают ли значение в DF1$number
матче со значениями в DF2$number
для каждого из соответствующих подмножеств DF2$category
. В идеале строки в этих новых столбцах будут показывать «1», если совпадение было сделано, и «0», если совпадение не имеет. С приведенными ниже фиктивными данными я получаю DF1
, имеющий 4 столбца (DF1$number
, DF1$A
, DF1$B
и DF$C
) по 10 рядов по каждому.
Обратите внимание, что в моем фактическом втором кадре данных у меня есть огромное количество категорий, поэтому я не хочу их вводить отдельно для любой операции, необходимой для достижения этой цели. Надеюсь это имеет смысл! Извините, если я пропущу что-то очевидное и очень благодарю за любую помощь, которую вы могли бы предоставить.
Да, это работает отлично. Огромное спасибо! Спасибо также Энди за редактирование, чтобы улучшить ясность моего оригинального сообщения. – user2093526
@ user2093526 - без проблем, рад помочь - если это ответит на вопрос, отметьте отметку «отметьте» рядом со стрелками вверх/вниз, чтобы сигнализировать об этом. – thelatemail
Вместо этого можно использовать _tapply_, 'tapply (DF2 $ number, DF2 $ category, function (x) DF1 $ number% in% x + 0)' –