Дублированные строки после изменения формы и соединения - PullRequest
0 голосов
/ 29 октября 2018

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

library(tidyverse)
(Test <- tibble(
  Student = c("A", "B", "C", "D", "E"),
  Test1 = c("SAT", "SAT", "SAT", "SAT", "SAT"),
  Test2 = c("NA", "ACT", "ACT", "ACT", "ACT"),
  testdate1 = c("7/1/2017", "6/1/2017", "3/1/2017", "2/17/2018", "NA"),
  testdate2 = c("NA", "NA", "1/1/2016", "12/1/2016", "10/1/2016")
))


(Testa <- tibble(
  Student = c("A", "B", "C", "D", "E"),
  Test1 = c("SAT", "SAT", "SAT", "SAT", "SAT"),
  Test2 = c("NA", "ACT", "ACT", "ACT", "ACT")
))


(Testb <- tibble(
  Student = c("A", "B", "C", "D", "E"),
  testdate1 = c("7/1/2017", "6/1/2017", "3/1/2017", "2/17/2018", "NA"),
  testdate2 = c("NA", "NA", "1/1/2016", "12/1/2016", "10/1/2016")
))

(td1 <- Testa %>% 
    gather(Test1, Test2, key = "Test", value = "Score"))
(td2 <- Testb %>% 
    gather(testdate1, testdate2, key = "Dated", value = "Datev"))
(tidy <- left_join(td1, td2))

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

enter image description here

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Я думаю, что самое простое решение - использовать stats::reshape, способный собирать несколько столбцов, как предлагается в ответах на этот вопрос:

Преобразование нескольких наборов измерительных столбцов (широкий формат) в отдельные столбцы (длинный формат)

Интерфейс stats:reshape не так прекрасен, как интерфейс tidy, но он выполняет свою работу за один вызов функции.

0 голосов
/ 29 октября 2018

Вам нужен идентификатор для студентов и идентификатор для тестов

Посмотрите, может ли это помочь

td1 <- Testa %>% 
     gather(Test1, Test2, key = "Test", value = "Score")

td2 <- Testb %>%
     gather(testdate1, testdate2, key = "Dated", value = "Datev") %>%
     mutate(Test=ifelse(Dated %in% "testdate1", "Test1", "Test2"))
tidy <- left_join(td1, td2)
tidy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...