2016-03-20 3 views
0

Ich habe eine Liste, die aus Datenrahmen (df1, df2, ..dfn) besteht.Häufigkeiten in einer bestimmten Spalte von Datenrahmen in einer Liste - R

Jeder Datenrahmen hat eine Spalte namens head1, die aus binären Elementen (0 und 1) besteht.

Zum Beispiel

list1[[1]]$head1 ist 11010001

list1[[2]]$head11000100000

ist, wo list1[[1]] ist df1 und list1[[2]]df2 ist.

Ich möchte einen Datenrahmen erhalten, der Anteil von 1en in der Kopfspalte jedes Datenrahmens der Liste1 zurückgibt.

Für das obige Beispiel:

df[1,]=0.5 

(vier 0'en und vier 1en)

df[2,]=0.2 

(acht 0'en und zwei 1'en)

Wie kann ich tun, dass R verwenden? Ich werde mich sehr für jede Hilfe freuen. Danke vielmals.

Antwort

2

Wir können lapply() in Kombination verwenden, um mit mean() den Anteil des 1 ‚s in der gleichen Spalte in einer Liste von data.frame‘ s zu erhalten.

lapply(list1, function(x) mean(x[,"head1"])) 
#$df1 
#[1] 0.5 
# 
#$df2 
#[1] 0.2 

Daten

list1 <- structure(list(df1 = structure(list(head1 = c(1, 1, 0, 1, 0, 
0, 0, 1)), .Names = "head1", row.names = c(NA, -8L), class = "data.frame"), 
    df2 = structure(list(head1 = c(1, 0, 0, 0, 1, 0, 0, 0, 0, 
    0)), .Names = "head1", row.names = c(NA, -10L), class = "data.frame")), .Names = c("df1", 
"df2")) 
Verwandte Themen