Как добавить столбец разной длины во фрейм данных в R? - PullRequest
1 голос
/ 19 июня 2020

У меня есть два DF:

df1


ID Borrower
 1   A 
 2   A 
 3   A

df2


ID Borrower Category
 1    A        X 
 1    A        X 
 1    A        X 
 2    A        X 
 2    A        X 
 2    A        X 
 3    A        X 
 3    A        X 
 3    A        X

Я хочу получить третий столбец df2 и добавить его в первый df. Окончательный результат, который я хочу получить, будет примерно таким:

ID Borrower Category 
1     A       X 
2     A       X 
3     A       X

Я пробовал df3<-left_join(df1, df2, by="ID", all=FALSE), но не работает. Этот код дает мне что-то похожее на df2 (поэтому ID = 1,1,1,2,2,2,3,3,3). Как добавить столбец «Категория» и получить желаемый результат, как указано выше? Спасибо :):)

1 Ответ

0 голосов
/ 19 июня 2020

Это потому, что у вас есть повторяющиеся значения в df2. Вы можете сделать:

library(tidyverse)
df1 <- tibble::tribble(
         ~ID, ~Borrower,
              1 ,  "A",
              2 ,  "A",
              3 ,  "A"
         )

df2 <- tibble::tribble(
         ~ID, ~Borrower, ~Category,
          1L,       "A",       "X",
          1L,       "A",       "X",
          1L,       "A",       "X",
          2L,       "A",       "X",
          2L,       "A",       "X",
          2L,       "A",       "X",
          3L,       "A",       "X",
          3L,       "A",       "X",
          3L,       "A",       "X"
         )

df1 %>% 
  left_join(distinct(df2)) 

Joining, by = c("ID", "Borrower")
# A tibble: 3 x 3
     ID Borrower Category
  <dbl> <chr>    <chr>   
1     1 A        X       
2     2 A        X       
3     3 A        X 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...