Я пытаюсь преобразовать свои данные в широкую форму, но я новичок в этом, и пока обычная функция преобразования не работает. Когда я пытаюсь использовать полные данные (этот отрывок, похоже, работает), я получаю значения NA для всех моих значений, а имена столбцов превращаются в странные числовые векторы.
Мои данные выглядят так, PNR - это идентификаторпеременная, которая уникальна для каждого наблюдения.
PNR ZIPCODE SEL_CRITERION QUAL_RATING QUEUENUMBER UPSEC_ID UPSEC_COURSE_ID MARK COURSEOFFERING_ID ADMISSIONROUND_ID RESULT WITHIN_PROGRAM SUMMA
1234567890 46395 HB 55 0 HRF SV203 G 97116 HT2019 20 0 67.5
1234567890 46395 HB 55 0 HRF EN200 VG 97116 HT2019 20 0 67.5
1234567890 46395 HB 55 0 HRF MA200 VG 97116 HT2019 20 0 67.5
1234567890 46395 HB 55 0 HRF <null> <null> 97116 HT2019 20 0 67.5
2345678901 42332 B5 2645 0 3SB EN1201 VG 97116 HT2019 20 0 70.5
2345678901 42332 B5 2645 0 3SB MA1201 VG 97113 HT2019 20 0 70.5
2345678901 42332 B5 2645 0 2SM SV1201 VG 97113 HT2019 20 0 70.5
Я бы хотел, чтобы это выглядело примерно так:
PNR ZIPCODE HB B5 QUEUENUMBER UPSEC_ID SV203 EN200 MA200 <null> EN1201 MA1201 SV1201
1234567890 46395 95 NA 0 HRF G VG VG NA NA NA NA
2345678901 42332 NA 1645 0 3SB NA NA NA NA VG VG VG
Есть ли способ, которым я могу это сделать?
Я пыталсяиспользуйте обычную функцию изменения формы, которая с треском проваливается (но не обязательно в этом небольшом фрагменте):
test<-reshape(HT2018, idvar="PNR",timevar=c("SEL_CRITERION", "UPSEC_COURSE_ID"), v.names=c("QUAL_RATING","MARK"), direction = "wide")
Я также пробовал функции melt и cast из пакета reshape2, который возвращает одну строку с тремязначения (ни одно из них не является правильным), хотя я, конечно, могу делать что-то не так:
test<-melt(HT2018, id="PNR")
test<-cast(test, QUAL_RATING + MARK ~ PNR)
structure(list(PNR = c(1234567890, 1234567890, 1234567890, 1234567890,
2345678901, 2345678901, 2345678901), ZIPCODE = c(46395L, 46395L,
46395L, 46395L, 42332L, 42332L, 42332L), SEL_CRITERION = structure(c(2L,
2L, 2L, 2L, 1L, 1L, 1L), .Label = c("B5", "HB "), class = "factor"),
QUAL_RATING = c(55L, 55L, 55L, 55L, 2645L, 2645L, 2645L),
QUEUENUMBER = c(0L, 0L, 0L, 0L, 0L, 0L, 0L), UPSEC_ID = structure(c(2L,
2L, 2L, 2L, 1L, 1L, 1L), .Label = c("3SB", "HRF"), class = "factor"),
UPSEC_COURSE_ID = structure(c(7L, 3L, 5L, 1L, 2L, 4L, 6L), .Label = c("<null>",
"EN1201 ", "EN200 ", "MA1201 ", "MA200 ",
"SV1201 ", "SV203 "), class = "factor"), MARK = structure(c(2L,
3L, 3L, 1L, 3L, 3L, 3L), .Label = c("<null>", "G ", "VG "
), class = "factor"), COURSEOFFERING_ID = c(97113L, 97113L,
97113L, 97113L, 97113L, 97113L, 97113L), ADMISSIONROUND_ID = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L), .Label = "HT2018 ", class = "factor"),
RESULT = c(20L, 20L, 20L, 20L, 20L, 20L, 20L), WITHIN_PROGRAM = c(0L,
0L, 0L, 0L, 0L, 0L, 0L), SUMMA = structure(c(1L, 1L, 1L,
1L, 2L, 2L, 2L), .Label = c("67.5", "70.5"), class = "factor")), class = "data.frame", row.names = c(NA,
-7L))