2017-09-16 1 views
0

Wie konvertiere ich das folgende Format in eine Schleife?Dynamische Variable in einer Schleife referenzieren

alphateam_df <- dplyr::filter(data, grepl("alphateam", Winners)) 
alphateam_mean <- mean(alphateam_df$growth) 
betateam_df <- dplyr::filter(data, grepl("betateam", Winners)) 
betateam_mean <- mean(betateam_df$growth) 

In anderen Sprachen, die ich so etwas wie schreiben würde: Ich

for (team in c("alphateam","betateam")) { 
    {team}_df <- dplyr::filter(data, grepl({team}, Winners)) 
    {team}_mean <- mean({team}_df$growth) 
} 

Mit etwas suchen bekam so weit wie die folgenden, bekam aber auf dem Mittelwert() Bit stecken. Auch fragen, ob es so kompliziert sein muss?

for (team in c("alphateam", "betateam")) { 
    assign(paste(team, "_df", sep = ''), dplyr::filter(full, grepl(team, Winners))) 
    assign(paste(team, "_mean", sep = ''), mean(...) 
} 
+2

Ein for-Schleife sehen vielleicht nicht die beste Wahl für diese Art von Arbeitsplätzen sein. Sie könnten sich für diesen Beitrag interessieren: https://stackoverflow.com/questions/11562656/average-data-by-group – mt1022

+0

Können Sie ein [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how) zur Verfügung stellen - um ein großartiges r-reproduzierbares Beispiel zu erstellen? – jsb

Antwort

0

Wie bereits von @ mt1022 erwähnt, möchten Sie vielleicht nicht mit einer for-Schleife für diese zu berücksichtigen. Im folgenden Beispiel werden die Funktionen group_by und summarise von dplyr verwendet, um den Mittelwert für jede Gruppe von Gewinnern zu ermitteln.

suppressPackageStartupMessages(library(dplyr)) 

# example data 
df <- tibble(Winners = c("alphateam", "betateam", "alphateam", "alphateam", 
         "betateam", "betateam"), 
      growth = c(4, 7, 2, 12, 7, 10)) 

# mean for each Winners group 
df %>% 
    group_by(Winners) %>% 
    summarise(mean_growth = mean(growth)) 
#> # A tibble: 2 x 2 
#>  Winners mean_growth 
#>  <chr>  <dbl> 
#> 1 alphateam   6 
#> 2 betateam   8 

Für weitere Informationen, die summarise Beispiele http://dplyr.tidyverse.org/reference/summarise.html

Verwandte Themen