IMPORTAZIONE e TRANSPOSE DATA - Interruttori record da colonne alle righe (trasposizione non melt / cast)
Domanda
Sono quasi sicuro che queste domande siano state poste e risposte, ma non sono proprio sicuro come chiederlo, quindi qui va: Ho dei dati che assomigliano a questo (ci sono circa 1000 in più che sembrano simili):
KV2c KV2c KV2c I210plus I210plus I210plus I210plus
12s 16s 16s 1s 2s 2s 4s
320 200 320 100 200 320 20
T T F F T T T
.
Se si nota, le prime 4 righe hanno 4 caratteristiche di ciascuna unità che sto osservando ... Voglio importare questo in R come un dataframe e quindi guarda il numero di pass / fallimenti (T e F)in base ai vari modi per permutare le 4 righe superiori.
Ad esempio, forse vorremmo affrontare tutte le unità che sono KV2C che sono anche 12s e hanno un 200 nella terza fila e, non so ... ottenere la percentuale di T's vs. F. .
Grazie!
Soluzione
Ecco un esempio riproducibile che contiene tutti gli elementi che devi considerare. Prova a eseguirlo prima di collegarsi al tuo file. Il passo importante è la conversione di df
in dft
utilizzando la funzione t()
che traspone le righe in colonne.
Nota che ho incluso un riferimento alla libreria reshape2
per riformattare i dati, ci sono molte alternative di analisi là fuori. Questo dovrebbe iniziare, ovviamente è necessario modificare il nome del file e i nomi delle colonne quando si collega ai tuoi dati.
# to generate a reproducible dataset
test.df = data.frame(
expand.grid(ch1 = letters[1:3], ch2 = letters[1:3], ch3 = letters[1:3], stringsAsFactors = FALSE),
test.result = as.character(sample(c("T", "F"), 27, replace = TRUE)))
write.table(t(test.df), file = "testfile.csv", sep = ",", row.names = FALSE, col.names=FALSE)
# now to import the dataset into R
rm(list=ls())
df = read.csv("testfile.csv", header=FALSE)
# transpose your dataset to switch rows and columns and give meaningful names
dft = data.frame(t(df))
names(dft) = c("ch1", "ch2", "ch3", "test.result")
dft$test.result = ifelse(dft$test.result == "T", 1, 0)
# the data is now in a format to perform analysis and plotting
library(reshape2)
dcast(dft, ch1 + ch2 ~ test.result)
with(dft, table(ch1, test.result, ch2))
.
Come un dopo aver pensato, probabilmente vuoi convertire le caratteristiche dal tipo di dati character
a factor
prima dell'analisi. Questo aiuta con la stampa se si sceglie di utilizzare il pacchetto ggplot2
eccellente. Ecco un esempio per cambiare una delle caratteristiche su un factor
:
dft$ch1 = factor(dft$ch1)
.
Un paio di siti utili per le basi di analisi e tracciamento di cui è necessario includere:
http://www.statmethods.net/stats/frequequences.html < / P >.