Объединение двух наборов данных с использованием разных имен столбцов: left_Join - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь объединить два набора данных, используя два отдельных имени столбца, но которые имеют одинаковые уникальные значения. Например, столбец A в наборе данных 1 == xyzw, а в наборе данных 2 имя столбца - B, но значение == xyzw.

Однако проблема в том, что в наборе данных 2 значение B столбца == xyzw относится к названиям фирм и появляется несколько раз, в зависимости от того, сколько сотрудников в этой фирме существует в наборе данных.

По сути, я хочу создать новый столбец, назовем его C в наборе данных 1, сообщая, сколько сотрудников в каждой фирме.

Я пробовал следующее:

## Counting how many teachers are in each matched school, using the "Matched" column from matching_file_V4, along with the school_name column from the sample11 dataset:
merged_dataset <- left_join(sample11,matched_datasets,by="school_name")

Хотя этот код работает, он на самом деле не дает мне количество сотрудников на фирму.

1 Ответ

1 голос
/ 04 февраля 2020

Если бы вы могли предоставить пример данных и ожидаемый результат, другим было бы легче помочь. Но, несмотря на это, я надеюсь, что это даст вам то, что вы хотите:

Предполагая, что у нас есть эти два фрейма данных:

df_1 <- data.frame(
  A = letters[1:5],
  B = c('empl_1','empl_2','empl_3','empl_4','empl_5')
)

df_2 <- data.frame(
  C = sample(rep(c('empl_1','empl_2','empl_3','empl_4','empl_5'), 15), 50),
  D = sample(letters[1:5], 50, replace=T)
)


# I suggest you find the number of employees for each firm in the second data frame  


df_2%>%group_by(C)%>%
  summarise(
    num_empl = n()
  )%>%  ### Then do the left join
  left_join(
    df_1,., by=c('B' = 'C') ## this is how you can join on two different column names
  )

#   A      B num_empl
# 1 a empl_1        8
# 2 b empl_2       11
# 3 c empl_3       10
# 4 d empl_4       10
# 5 e empl_5       11
...