Come faccio a strutturare e dati recode disordinato categorici in R?
-
03-10-2019 - |
Domanda
Sto lottando con il modo di migliore struttura dati categorici che è disordinato, e viene da una set di dati avrò bisogno di pulire.
Il Coding Scheme
Sto analizzando i dati da un esame corso di scienze dell'università. Stiamo guardando i modelli in le risposte degli studenti, e abbiamo sviluppato uno schema di codifica per rappresentare il tipo di cose gli studenti stanno facendo nelle loro risposte. Un sottoinsieme dello schema di codifica è mostrato sotto.
Si noti che all'interno di ogni codice principale (1, 2, 3) sono sottocodici non esclusiva nidificati (a, b, ...).
quello che sembra i dati grezzi come
Ho creato un anonimo, sottoinsieme grezzo dei miei dati reale che è possibile visualizzare qui .
Parte del mio problema è che coloro che hanno codificato i dati notato che alcuni studenti visualizzati
più pattern. La soluzione dei programmatori era quello di creare abbastanza colonne (reason1
, reason2
,
...) per tenere gli studenti con più modelli. Che diventa importante perché l'ordine
(reason1
, reason2
) è arbitraria - due studenti (come studente e studente 41 42 nel mio
dataset ) che correttamente applicato "dipendenza" dovrebbe sia registro in un'analisi, indipendentemente di
se 3a
appare nella colonna reason
o la colonna reason2
.
Come posso migliore struttura Student dati?
Parte del mio problema è che nel dati grezzi , non tutti gli studenti mostrano lo stesso modelli o lo stesso numero di loro, nello stesso ordine. Alcuni studenti possono fare solo una cosa, gli altri possono fare diversi. Quindi, una rappresentazione astratta di esempio studenti potrebbe simile a questa:
Nota nell'esempio di cui sopra che student002
e student003
entrambi sono codificati come "1b", anche se ho volutamente mostrato l'ordine come diverso di riflettere la realtà di miei dati .
I miei (pratica) Domande
- Dovrei concatenate
reason1
,reason2
,...
in una colonna? - Come posso (ri) Codice delle
reason
s in R in modo da riflettere la molteplicità per alcuni studenti?
Grazie
Mi rendo conto che questa domanda è tanto di buono concettualizzazione dei dati in quanto è circa specifica dispone di R, ma ho pensato che sarebbe stato opportuno chiedere qui. Se si sente che è inappropriato per me a porre la domanda, per favore fatemelo sapere nei commenti, e StackOverflow inonderà automaticamente la mia casella di posta con emoticon sadface. Se non sono stato abbastanza specifico, per favore fatemelo sapere e farò del mio meglio per essere più chiaro.
Soluzione
Lo rendono "lungo":
library(reshape)
dnow <- read.csv("~/Downloads/catsample20100504.csv")
dnow <- melt(dnow, id.vars=c("Student", "instructor"))
dnow$variable <- NULL ## since ordering does not matter
subset(dnow, Student%in%c(41,42)) ## see the results
Cosa fare dopo dipenderà dal tipo di analisi che si desidera fare. Ma il formato lungo è l'utile per i dati irregolari come la vostra.
Altri suggerimenti
si dovrebbe usare ddply da plyr e divisa su tutte le colonne, se si vuole prendere in considerazione le diverse ragioni, se si vuole ignorarli non utilizzare quelle colonne in divisa. Avrai bisogno di ripulire alcuni dei punti interrogativi e materiale extra, però.
x <- ddply(data, c("split_column1", "split_column3" etc),
summarize(result_df, stats you want from result_df))
Qual è la (più grande immagine) domanda si sta tentando di risposta? Perché queste informazioni interessa a te?
Stai solo cercando di trovare modelli come 'se lo studente fa questo, allora anche probabile che fanno questo'?
Qualcosa mi piacerebbe prendere in considerazione se questo è il caso -. Dividere il set di dati in campioni casuali più piccoli per la vostra analisi per ridurre il rischio di falsi positivi
Interessante problema però!