Объединение числовых и символьных значений из разных наборов данных

Я пытаюсь объединить два набора данных. Набор данных 1 имеет ок. 4000 строк, а набор данных 2 содержит 132 строки. Я хочу сопоставить имена Brand в наборе данных 2 с именем UPS в наборе данных 1. Итак, все UPS имеют соответствующие имена Brands в 1. Я попытался объединить их обоих с merge. Однако мне пока не удалось их объединить.

Набор данных 01: где ИБП является числовым

  UPS         WEEK  AP
1 1111112016    1   385.22
2 1111112016    2   221.63
3 1111112016    3   317.47
4 1111112016    4   173.71
5 1111112016    5   269.55

Набор данных 02:

  UPC        Brand
1 1111112016 Dove
2 1111112440 Dove
3 1111112480 Dove
4 1111112501 Dove
5 1111132008 Lever
6 1111132012 Lever
7 1111132048 Lever
8 1111132122 Lever

Вот как я пробовал это до сих пор:

Brand = c(unique(UB$Brand))
UPS = c(unique(PAW2$UPS))
PAWn = merge(PAW, UB, by.x = "UPS", by.y = "Brand")

Я знаю, что есть и другие посты. Но пока они не помогли.


person Christoph P.    schedule 16.10.2016    source источник
comment
Не должно быть by.y = "UPC"? Вы ничего не получили, потому что столбец UPS в PAW, конечно же, никогда не равен столбцу Brand в UB.   -  person nicola    schedule 16.10.2016


Ответы (1)


Судя по вашему описанию, вам нужно:

 merge(PAW, UB, by.x = "UPS", by.y = "UPC", all.x = TRUE)

чтобы получить то, что вы хотите. Как Никола уже сказал в комментариях, единственный способ сопоставить имена Brand в UB с кодами UPS в PAW — это сопоставление с кодами UPC в UB.

Это также работает, когда UB$UPC является символьной переменной, а PAW$UPS является числовой переменной.

При добавлении all.x = TRUE возвращаются все наблюдения в PAW, даже если у них нет совпадающих значений в UB.

person h3rm4n    schedule 16.10.2016
comment
Я попробовал это, и я все еще получаю сообщение об ошибке: Ошибка в fix.by(by.y, y): 'by' должен указывать однозначно допустимый столбец - person Christoph P.; 16.10.2016
comment
Он работает с примерными данными, которые вы указали в вопросе. Каковы названия ваших столбцов? - person h3rm4n; 16.10.2016
comment
Я смог решить это. Кажется, что не нужно назначать определенные значения для аргументов слияния, которые позже используются by.x или by.y. Вы просто можете сказать, какой столбец следует выбрать. Я только что сказал PAW_N = объединить(PAW, UB, by.x = UPS, by.y = UPC, all.x = TRUE) - person Christoph P.; 16.10.2016