Лучшая практика кодирования: цикл с использованием dplyr для получения сводной статистики - PullRequest
0 голосов
/ 09 мая 2018

У меня есть 2 переменные, которые я хочу суммировать, и я изо всех сил пытаюсь зациклить R. Я хочу сгруппировать переменную по году, а затем суммировать обе переменные: R_D$ и Returns$. Мой код ниже ... Как бы я сделал цикл вместо того, чтобы писать код дважды?

Сводка по выбору для R_D

 R_DYear<- df %>% group_by(Year) %>%
   do(data.frame(as.list(summary(.$`R_D$`)), check.names = FALSE))

 ds2 <-df %>%
   group_by(Year) %>%
   summarise( sum=sum(`R_D$`), sd=sd(`R_D$`))  
 R_DYear<- R_DYear%>% left_join(ds2)

Сводка по выбору для возврата

 Returs_Year<- df %>% group_by(Year) %>%
 do(data.frame(as.list(summary(.$`Returns$`)), check.names = FALSE))

 ds3 <-df %>%
   group_by(Year) %>%
   summarise( sum=sum(`Returns$`), sd=sd(`Returns$`))  
 Returs_Year<- Returs_Year %>% left_join(ds3)

Ниже приведен небольшой пример вывода для RD_Year

 Year   Min.    1st Qu. Median  Mean    3rd Qu. Max.    sum      sd
 2006     0      0.0    1.2     15.5    16.0    161.0   730.2   31.6
 2007     0      0.0    0.9     20.8    18.1    213.9   976.2   45.0
 2008     0      0.0    2.2     30.2    20.1    361.4   1418.6  72.9

1 Ответ

0 голосов
/ 09 мая 2018

Данные

df = data.frame(year = 1:4, replicate(2,sample(0:20,20,rep=TRUE)))
col = c("R_D","Returns" )
colnames(df)[2:3] <- col

Вот метод с использованием агрегата

Сводка по R_D по годам

aggregate(df[, c("R_D")] , df["year"], FUN = function(x) c(summary(x), sum = sum(x), sd = sd(x)))

Сводка по доходам по годам

aggregate(df[, c("Returns")] , df["year"], FUN = function(x) c(summary(x), sum = sum(x), sd = sd(x)))

Edit1

df1 = aggregate(x= df[, c("R_D","Returns")] , df["year"], FUN = function(x) c(summary(x), sum = sum(x), sd = sd(x)))
R_D = as.data.frame(cbind(Year = df1$year, df1$R_D))
Returns = as.data.frame(cbind(Year = df1$year, df1$Returns))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...