2016-11-15 5 views
0

Ich habe zwei Datenrahmen, einen mit 181 Obs. Und 521 Variablen, und den anderen Datenrahmen mit zwei Variablen und 150 Obs. Der erste Datenrahmen ist der vollständig Daten und der zweite ist der Continuos-Variablen-Namen aus dem ersten Datenrahmen. Ich möchte den Mittelwert, die Varianz, den Median und andere Statistiken für die Continuos-Variablen berechnen. Zum Beispiel:Statistik von 150 Variablen im Datenrahmen

df1: 
    ha_be me_cu par_pri fer_ex 
     1  1000  300   5 
     0  500  150   7 
     0  300  400   5 
     0  900   80   6 
     1  2100  50   3 
     1  3400  60   2 
     0  390  800   1 
     1  400  750   4 

df_cont: 
     Cod variable.names 
     3.2  me_cu 
     3.3  par_pri 

Wie kann ich extrahieren alle Kontinuierlich Variablen aus df1 die Namen in df_cont mit und berechnen alle Grundlagen, Statistiken? Ich habe mit einer for Schleife versucht, funktioniert aber nicht richtig.

Antwort

1

Wir select verwenden, um die Spalten in 'DF1' zu halten und dann mit summarise_each bekommen die grundlegenden Statistiken

library(dplyr) 
df1 %>% 
    select_(.dots = df_cont$variable.names) %>% 
    summarise_each(funs(mean, sum)) #specify the functions 

Wenn 'variable.names' ist factor, wandeln es in character (select_(.dots = as.character(df_cont$variable.names)))

Neben den einzelnen Funktionen in summarise_each, können wir auch die summary aufrufen, um die min, max, median, mean usw.

zu erhalten
df1 %>% 
    select_(.dots = df_cont$variable.names) %>% 
    summary 
1

Oder diese:

summary.df <- as.data.frame(summary(df1[df_cont$variable.names]))[,2:3] 
names(summary.df) <- c('variable.name', 'stat') 

    variable.name stat 
1   me_cu Min. : 300.0 
2   me_cu 1st Qu.: 397.5 
3   me_cu Median : 700.0 
4   me_cu Mean :1123.8 
5   me_cu 3rd Qu.:1275.0 
6   me_cu Max. :3400.0 
7  par_pri Min. : 50.0 
8  par_pri 1st Qu.: 75.0 
9  par_pri Median :225.0 
10  par_pri Mean :323.8 
11  par_pri 3rd Qu.:487.5 
12  par_pri Max. :800.0 
+0

Wie kann ich es tun, wenn ich nicht tun Kennst du die Nummer der Kolumne? – Dan

+0

Sie müssen nicht die Nummer der Spalte wissen, 2: 3 wird nur verwendet, um die erste Spalte des Zusammenfassungsdatenrahmens zu verwerfen, die nicht nützlich ist, hat es nichts mit der Spaltennummer zu tun. –

2

Sie auch durch diese Art und Weise tun können (nur wenn Sie alle Kontinuierlich haben):

df1<-lapply(df1, as.numeric) 
mean<-vapply(df1, mean, na.rm=TRUE, numeric(1)) 
median<-vapply(df1, median, na.rm=TRUE, numeric(1)) 
des<-vapply(df1,sd,na.rm=T,numeric(1)) 
var<-vapply(df1, var, na.rm=TRUE, numeric(1)) 
maxi<-vapply(df1, max, na.rm=TRUE, numeric(1)) 
min<-vapply(df1, min, na.rm=TRUE, numeric(1)) 

cont<-data.frame(mean,median,des,var,max,min) 
Verwandte Themen