IMPORTAZIONE e TRANSPOSE DATA - Interruttori record da colonne alle righe (trasposizione non melt / cast)

StackOverflow https://stackoverflow.com//questions/21050969

  •  22-12-2019
  •  | 
  •  

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!

È stato utile?

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 >.

http://www.cookbook-r.com/graphs/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top