Tôi có một mẫu dataframe "dữ liệu" như sau:ddply để tổng hợp theo nhóm R
X Y Month Year income
2281205 228120 3 2011 1000
2281212 228121 9 2010 1100
2281213 228121 12 2010 900
2281214 228121 3 2011 9000
2281222 228122 6 2010 1111
2281223 228122 9 2010 3000
2281224 228122 12 2010 1889
2281225 228122 3 2011 778
2281243 228124 12 2010 1111
2281244 228124 3 2011 200
2281282 228128 9 2010 7889
2281283 228128 12 2010 2900
2281284 228128 3 2011 3400
2281302 228130 9 2010 1200
2281303 228130 12 2010 2000
2281304 228130 3 2011 1900
2281352 228135 9 2010 2300
2281353 228135 12 2010 1333
2281354 228135 3 2011 2340
Tôi muốn sử dụng ddply
để tính toán thu nhập cho mỗi Y
(không X
), nếu tôi có bốn các quan sát cho mỗi Y (ví dụ cho 2281223 với các tháng 6,9,12 của năm 2010 và tháng 3 năm 2011). Nếu tôi có ít hơn bốn quan sát (ví dụ cho Y = 228130), tôi muốn bỏ qua nó. Tôi sử dụng các lệnh sau trong R
với mục đích trên:
require(plyr)
# the data are in the data csv file
data<-read.csv("data.csv")
# convert Y (integers) into factors
y<-as.factor(y)
# get the count of each unique Y
count<-ddply(data,.(Y), summarize, freq=length(Y))
# get the sum of each unique Y
sum<-ddply(data,.(Y),summarize,tot=sum(income))
# show the sum if number of observations for each Y is less than 4
colbind<-cbind(count,sum)
finalsum<-subset(colbind,freq>3)
đầu ra của tôi là như sau:
>colbind
Y freq Y tot
1 228120 1 228120 1000
2 228121 3 228121 11000
3 228122 4 228122 6778
4 228124 2 228124 1311
5 228128 3 228128 14189
6 228130 3 228130 5100
7 228135 3 228135 5973
>finalsum
Y freq Y.1 tot
3 228122 4 228122 6778
Đoạn mã trên hoạt động, nhưng đòi hỏi nhiều bước. Vì vậy, tôi muốn biết liệu có một cách đơn giản để thực hiện nhiệm vụ trên (sử dụng gói plyr) hay không.
bạn có thể tạo cả hai biến 'freq' và' tot' trong một lần với 'tóm tắt' và có thể không cần phải chuyển Y thành yếu tố. – baptiste