2016-08-14 12 views
0

Итак, проблема в этом вопросе заключается в том, что я не могу опубликовать фактический код из-за соглашения, которое мне пришлось подписать, и я новичок в R и, вероятно, не могу это объяснить, но, возможно, кто-то может мне помочь ...Как сохранить столбцы при группировке/суммировании?

Допустим, у меня есть некоторые данные:

A B C D 
F1 6.6 10 10 
F1 3.1 10 10 
A1 1.0 20 10 
B1 3.4 20 20 

Таким образом, для каждого A, значения C и D являются одинаковыми. Но я хочу использовать dplyr найти Bmean так:

A Bmean C D 
F1 4,85 10 10 
A1 1.0  20 10 
B1 3.4  20 20 

Как бы мне это сделать? Моя идея состояла в том, чтобы использовать что-то вроде

dplyr::group_by(A) %>% dplyr::summarize(Bmean = mean(B)) 

, но C и D, похоже, исчезают после этой операции. Будет ли смысл группировать все столбцы, которые я хочу сохранить? Или как это будет работать?

Чтобы уточнить, я хотел бы использовать синтаксис dplyr, поскольку он является частью более крупной операции, если это возможно.

+2

Что-то вроде этого работает для вас? 'group_by (df, A, C, D)%>% суммировать (Bmean = mean (B))' Тогда у вас есть 'C' и' D'. – jazzurro

ответ

2

Вы можете сделать это с помощью base R

aggregate(data=df1,B~.,FUN = mean) 
2

Вы можете просто использовать что-то вроде этого:

aggregate(cbind(B, C, D) ~ A, df, mean) 

Здесь ФР ваш фрейм данных с колоннами A, B, C и D.

1

Мы можем использовать data.table

library(data.table) 
setDT(df1)[,.(Bmean = mean(B)) , .(A, C, D)] 
#  A C D Bmean 
#1: F1 10 10 4.85 
#2: A1 20 10 1.00 
#3: B1 20 20 3.40 
Смежные вопросы