2017-09-16 2 views
0

다음 형식을 루프로 변환하려면 어떻게합니까? 내가 좋아하는 뭔가를 작성합니다 다른 언어에서루프에서 동적 변수 참조

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) 

: 나는 검색의 비트와 함께

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

는 지금까지 다음과 같은 얻었으나, 평균() 비트에 붙어있어. 또한 이것이 복잡 할 필요가 있는지 궁금해하십니까? @의 mt1022 이미 언급 한 바와 같이

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

A의 루프 작업의 이런 종류의 최선의 선택을하지 않을 수 있습니다. 이 게시물에 관심이있을 수 있습니다. https://stackoverflow.com/questions/11562656/average-data-by-group – mt1022

+0

[재현 가능한 예]를 제공 할 수 있습니까 (http://stackoverflow.com/questions/5963269/how -to-make-a-great-r-reproducible-example)? – jsb

답변

0

, 당신은 이것에 대한 루프를 사용 하지을 고려할 수 있습니다. 다음 예제에서는 dplyrgroup_bysummarise 함수를 사용하여 각 수상자 그룹의 평균을 구합니다.

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 

대한 추가 정보는 summarisehttp://dplyr.tidyverse.org/reference/summarise.html를 참조하십시오