Соедините два столбца тривиально в R - PullRequest
1 голос
/ 19 июня 2020

Я хочу объединить две таблицы: одну со старыми данными о продукте и ранге, а во вторую с несколькими обновленными рангами для какого-то продукта в первой таблице. * Я хочу, чтобы таблица вывода выглядела так:

Product    Rank
a           32
b            7
c           14
d            8
e            1

TIA:)

Ответы [ 2 ]

1 голос
/ 19 июня 2020

В одну сторону с базой R:

rbind(table1[!table1$Product %in% table2$Product, ], table2)
#>    Product Rank
#> 1        a   32
#> 3        c   14
#> 5        e    1
#> 11       b    7
#> 2        d    8

Или по назначению:

table1[table1$Product %in% table2$Product, ] <- table2

table1
#>   Product Rank
#> 1       a   32
#> 2       b    7
#> 3       c   14
#> 4       d    8
#> 5       e    1

данные

table1 <- read.table(text =
"Product    Rank 
a           32     
b           21
c           14
d           36
e            1", header = TRUE)

table2 <- read.table(text =
                       "Product   Rank
b          7
d          8", header = TRUE)

1 голос
/ 19 июня 2020

Использование dplyr и предположение, что ваши таблицы представляют собой data.frames с именами df и df2:

df %>% 
  left_join(df2, by="Product") %>%
  mutate(Rank=coalesce(Rank.y, Rank.x)) %>%
  select(-Rank.x, -Rank.y)

дает

# A tibble: 5 x 2
  Product  Rank
  <chr>   <dbl>
1 a          32
2 b           7
3 c          14
4 d           8
5 e           1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...