2015-02-20 4 views
4

у меня есть набор данных data1 следующимг, если еще на основе нескольких условий

  Group  Code 
      Blue  1333 
      Blue  4444 
      Blue  9876 
      Blue  8785 
      Red  3145 
      Red  8756 
      Red  9745 
      Red  8754 

Второй набор данных data2 выглядит следующим образом

  Id  Description 
      1333  Sea Weed 
      4444  Honey Roasted Peanut 
      8754  Green Tea 
      8756  Potato Chips 
      3145  Strawberry Grahams 
      8787  Arizona Ice Tea 

Я пытаюсь создать третий столбец в моей 2-ой Dataset, data2, который хранит

  1 - If the code is from blue Group in Data1 and matches with Id in Data2, Data1$Group = Blue && Data1$Code == Data2$Id 

      2 - If the code is from Red Group in Data1 and matches with Id in Data2, Data1$Group = Red && Data1$Code == Data2$Id 

      0 - If the Id in Data2 does not match the Code in Data1 , regardless of whether it is Blue or Red group. 

окончательный набор данных должен выглядеть следующим образом

  Id  Description    Result 
      1333  Sea Weed    1 
      4444  Honey Roasted Peanut 1 
      8754  Green Tea    2 
      8756  Potato Chips   2 
      3145  Strawberry Grahams  2 
      8787  Arizona Ice Tea   0 

Нужна помощь

+4

'dat2 $ Результат <- dat1 $ Группа [match (dat2 $ Id, dat1 $ Code)] 'даст вам цвета, которые вы затем можете перекодировать – user20650

+0

@ :), которые отлично работали +1 –

+1

Так как вы включили в свой пост тег 'dplyr', вот ответ 'dplyr':' dat2 <- dat2 %>% left_join (dat1, by = c ('Id' = 'Code'))%>% select (Id, Description, Result = Group) '(хотя базовый R-ответ проще следовать ...) – Jthorpe

ответ

1

Легче база R Ответ заключается в использовании merge

> merge(data1, data2, by.x='Code', by.y='Id', all.y=T) 

    Code Group   Description 
1 1333 Blue    Sea Weed 
2 3145 Red Strawberry Grahams 
3 4444 Blue Honey Roasted Peanut 
4 8754 Red   Green Tea 
5 8756 Red   Potato Chips 
6 8787 <NA>  Arizona Ice Tea 

Если ваше сердце на использовании dplyr, а затем переименовать столбец является самым простым способом, чтобы сделать это переименуйте столбец так, чтобы он совпадал с объединенной таблицей

data2 %>% rename(Code=Id) %>% left_join(data1) 
Смежные вопросы