2013-05-27 56 views
7

Tôi có dataframe sau (df1):hàng Collapse R và tổng hợp các giá trị trong cột

ID someText PSM OtherValues 
ABC c 2 qwe 
CCC v 3 wer 
DDD b 56 ert 
EEE m 78 yu 
FFF sw 1 io 
GGG e 90 gv 
CCC r 34 scf 
CCC t 21 fvb 
KOO y 45 hffd 
EEE u 2 asd 
LLL i 4 dlm 
ZZZ i 8 zzas 

Tôi muốn sụp đổ cột đầu tiên và thêm PSM tương ứng giá trị và Tôi muốn nhận được kết quả sau:

ID Sum PSM 
ABC 2 
CCC 58 
DDD 56 
EEE 80 
FFF 1 
GGG 90 
KOO 45 
LLL 4 
ZZZ 8 

Có vẻ như có thể thực hiện được với hàm tổng hợp nhưng không biết cú pháp. Bất kỳ trợ giúp nào thực sự được đánh giá cao! Cảm ơn.

Trả lời

16

Trong cơ sở:

aggregate(PSM ~ ID, data=x, FUN=sum) 
## ID PSM 
## 1 ABC 2 
## 2 CCC 58 
## 3 DDD 56 
## 4 EEE 80 
## 5 FFF 1 
## 6 GGG 90 
## 7 KOO 45 
## 8 LLL 4 
## 9 ZZZ 8 
2

Đây là siêu dễ dàng bằng cách sử dụng plyr gói:

library(plyr) 
ddply(df1, .(ID), summarize, Sum=sum(PSM)) 
1

Ví dụ sử dụng dplyr, phiên bản kế tiếp của plyr:

df2 <- df1 %>% group_by(ID) %>% 
    summarize(Sum_PSM = sum(PSM)) 

Khi bạn đặt các ký tự %>%, bạn là "đường ống". Điều này có nghĩa là bạn nhập vào phần bên trái của toán tử đường ống đó và thực hiện hàm ở bên phải.

Các vấn đề liên quan