Я пытаюсь объединить два кадра данных с различными измерениями, но просто не могу получить результат, который я получаю. Вот пример того, что я пытаюсь достичь:R: Объединение фреймов данных различной длины без значений утилизации
фрейма данных выглядит следующим образом:
id value
A X
A Y
A Z
B Y
C X
C Z
кадр данных B выглядит следующим образом:
id value
A U
A W
B U
B W
B V
C V
И фрейм данных I» м пытается создать внешний вид, как:
id value.A value.B
A X U
A Y W
A Z NA
B Y U
B NA W
B NA V
C X V
C Z NA
Я пытался объединить кадры данных с базой merge
, но продолжайте получать повторяющиеся значения вместо NA
. Он также, кажется, расширяет результирующий фрейм данных, чтобы обеспечить уникальные комбинации value.A
и value.B
, которые мне также не интересны. Наконец, не все идентификаторы в кадре данных B имеют соответствующий ID в кадре данных A, и в этом случае I хотел бы value.B
быть NA
для этого удостоверения личности.
Есть ли способ достичь того, что я ищу, с merge
или я ищу другой (набор) команд (-ов)?
Edit:
Просто чтобы прояснить, я сделал попробовать различные комбинации соединений, но до сих пор не нашли решения.
Пример:
A <- data.frame(id = c("A", "A", "A", "B", "C", "C"),
value = c("X", "Y", "Z", "Y", "X", "Z"))
B <- data.frame(id = c("A", "A", "B", "B", "B", "C"),
value = c("U", "W", "U", "W", "V", "V"))
merge(A, B, by="id", all=TRUE)
Производит:
id value.x value.y
A X U
A X W
A Y U
A Y W
A Z U
A Z W
B Y U
B Y W
B Y V
C X V
C Z V
То есть, гораздо больше, чем кадр данных, что я ищу, как значения повторяются для каждой уникальной пары значений в кадре данных A и B.
Редактирование 2: Похоже, я слишком упростил свой первоначальный пример, поэтому просто для того, чтобы уточнить, почему порядок моих значений имеет значение, мне придется расширить исходный пример немного:
фрейм данных выглядит следующим образом:
id value rank
A X 1
A Y 0.5
A Z 0.2
B Y 1
C X 1
C Z 0.8
кадр данных B выглядит следующим образом:
id value rank
A U 1
A W 0.6
B U 1
B W 0.2
B V 0.1
C V 1
И намеченная кадр данных выглядит следующим образом:
id value.A rank.A value.B rank.B
A X 1 U 1
A Y 0.5 W 0.6
A Z 0.2 NA NA
B Y 1 U 1
B NA NA W 0.2
B NA NA V 0.1
C X 1 V 1
C Z 0.8 NA NA
Я думаю, что это не на самом деле данные проблема кадров. Поскольку порядок U и W, соответствующий X, Y и Z, не определен, он может быть случайным. Может быть, лучше использовать список. – Psidom
Я думаю об этом как о причудливой версии 'cbind', где порядок двух наборов данных правильный, но один короче другого. Цель состоит в основном в том, чтобы группировать группы, где количество наблюдений по группе не обязательно должно совпадать. Это правда @ageil? – lmo
@Psidom Да, я полагаю, вы правы, порядок моих значений на самом деле случайен здесь. Однако в моем реальном наборе данных значения фактически привязаны к третьему числовому значению переменной X по Y для A в кадре данных A. Мне, вероятно, следует снова пересмотреть вопрос, чтобы это отразить, спасибо. – ageil