2017-02-19 8 views
0

Ich habe Daten aus einer Umfrage gesammelt. Die CSV-Datei sieht in etwa so aus.Cycling durch Spalten in R

1c x x 1e x x 2c x x 2e x x 

D x x D x x R x x R x x 

R x x R x x D x x D x x 

D x x D x x R x x R x x 

R x x R x x R x x R x x 

etc, etc ...

die x repräsentieren andere Daten, die nicht in dieser Analyse verwendet werden.

Die Antworten von 1c und 1e (oder beliebigen gepaarten Spalten) sollten identisch sein. Es wurde als Manipulationscheck durchgeführt, um zu testen, ob die Teilnehmer aufgepasst haben. Ich möchte die Anzahl von "D" s und die Anzahl von "R" s zählen, aber wenn gepaarte Spalten nicht übereinstimmen, werden sie nicht gezählt.

Im Moment mache ich etwas wie folgt aus:

final <- read("data.csv") 


    for(i in 1:length(rownames(final))){ 
     if(final$X1c[i] == final$X1e[i]){ 
     count <- append(count, as.character(final$X1c[i])) 
     } 
    } 
    for(i in 1:length(rownames(final))){ 
     if(final$X2c[i] == final$X2e[i]){ 
     count <- append(count, as.character(final$X2c[i])) 
     } 
    } 

und so weiter und so weiter.

Wie kann ich das tun, damit ich keine separate for-Schleife für jede einzelne Frage haben muss?

Antwort

0

Sie einfach zwei verschiedene Zähler in den Schleifen haben kann beiden Zählungen erfassen (oder wie viele ou haben):

final <- read("data.csv") 


    for(i in 1:length(rownames(final))){ 
     if(final$X1c[i] == final$X1e[i]){ 
     count <- append(count, as.character(final$X1c[i])) 
     if(final$X2c[i] == final$X2e[i]){ 
     count2 <- append(count2, as.character(final$X2c[i])) 
     } 
     } 

Aber ich würde eine anfängliche Tabelle oder Variablen außerhalb der Schleife für count & count2 erstellen .

Wenn Sie eine Megatonne Variablen haben, können Sie eine Liste, Tabelle oder einen anderen Vektor von Paaren erstellen, die in eine verschachtelte Schleife gesendet werden, um über die zu vergleichenden Spaltenpaare zu iterieren.

Wenn Sie jedoch nur die Gesamtzahl der Male d == d in einem Spaltenpaar mit mehreren Spalten und möglichen Faktoren in jedem Spaltenpaar erhalten möchten, sollten Sie das dplyr-Paket verwenden.

Wenn Sie group_by verwenden, um die zwei Spalten zu sammeln und dann summarize() verwenden mit etwas Logik und filter auf die entsprechenden Paare mit jedem Satz von Werten herausziehen, können Sie Tabellen von Zählungen zu schaffen, in denen sie die gleichen sind.

hier ist ein guter Link auf diese Weise mit dplyr:

dplyr tutorial using mtcars dataset