интегрировать данные из другого набора данных, условно по категориальному столбцу в R - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть два набора данных. У одного трудности с курсом, а у другого - список студентов и курсов, которые они прошли. Вот примеры наборов данных:

library(tidyverse)
courses <- tibble(course_name = c("Adv Operating", "Art Intel", "CS Net"),
            dif = c(1, 5, 10))


student_records <- tibble(student = c("Corey", "Sibley", "Justin"),
                  spring_14_1 = c("Adv Operating", "Adv Operating", "CS Net"),
                  spring_14_2 = c("Art Intel", NA, "Art Intel"))

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

answer <- tibble(student = c("Corey", "Sibley", "Justin"),
                  spring_14_1 = c("Adv Operating", "Adv Operating", "CS Net"),
                  spring_14_2 = c("Art Intel", NA, "Art Intel"),
                  spring_14_dif = c(6, 1, 15))

Я пытался делать case_when, но не могу его взломать. В идеале приветствуются ответы на все вопросы, но я открыт для любых предложений.

1 Ответ

1 голос
/ 27 февраля 2020
library(tidyverse)

student_records %>%
  pivot_longer(cols = starts_with("spring"), names_to = "Term", values_to = "Course") %>%
  left_join(courses, by = c("Course" = "course_name")) %>%
  group_by(student) %>%
  summarise(spring_14_dif = sum(dif, na.rm = T)) %>%
  left_join(student_records)

# A tibble: 3 x 4
  student spring_14_dif spring_14_1   spring_14_2
  <chr>           <dbl> <chr>         <chr>      
1 Corey               6 Adv Operating Art Intel  
2 Justin             15 CS Net        Art Intel  
3 Sibley              1 Adv Operating NA         
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...