R'de gruba göre toplam nasıl hesaplanır (örneklerle)


Genellikle R’de grup başına toplamı hesaplamak isteyebilirsiniz. Bunu yapmak için üç yöntem kullanabilirsiniz:

Yöntem 1: R tabanını kullanın.

 aggregate(df$col_to_aggregate, list(df$col_to_group_by), FUN= sum )

Yöntem 2: dplyr() paketini kullanın.

 library (dplyr)

df %>%
  group_by (col_to_group_by) %>%
  summarize (Freq = sum (col_to_aggregate))

Yöntem 3: data.table paketini kullanın.

 library (data.table)

dt[ ,list(sum= sum (col_to_aggregate)), by=col_to_group_by]

Aşağıdaki örnekler bu yöntemlerin her birinin pratikte nasıl kullanılacağını göstermektedir.

Yöntem 1: R tabanını kullanarak grup başına toplamı hesaplayın

Aşağıdaki kod, aşağıdaki veri çerçevesinde ekibin attığı puanların toplamını hesaplamak için R veritabanının Aggregate() işlevinin nasıl kullanılacağını gösterir:

 #create data frame
df <- data.frame(team=c('a', 'a', 'b', 'b', 'b', 'c', 'c'),
                 pts=c(5, 8, 14, 18, 5, 7, 7),
                 rebs=c(8, 8, 9, 3, 8, 7, 4))

#view data frame
df

  team pts rebs
1 to 5 8
2 to 8 8
3 b 14 9
4 b 18 3
5 b 5 8
6 c 7 7
7 c 7 4

#find sum of points scored by team
aggregate(df$pts, list(df$team), FUN= sum )

  Group.1 x
1 to 13
2 b 37
3 v 14

Yöntem 2: dplyr kullanarak toplamı gruba göre hesaplayın

Aşağıdaki kod, aşağıdaki veri çerçevesinde takımın kazandığı puanların toplamını hesaplamak için dplyr paketinin group_by() ve summarise() işlevlerinin nasıl kullanılacağını gösterir:

 library (dplyr)

#create data frame
df <- data.frame(team=c('a', 'a', 'b', 'b', 'b', 'c', 'c'),
                 pts=c(5, 8, 14, 18, 5, 7, 7),
                 rebs=c(8, 8, 9, 3, 8, 7, 4))

#find sum of points scored by team
df %>%
group_by (team) %>%
summarize (Freq = sum (pts))

# A tibble: 3 x 2
  team Freq
  <chr> <dbl>
1 to 13
2 b 37
3 v 14

Yöntem 3: data.table’ı kullanarak toplamı gruba göre hesaplayın

Aşağıdaki kod, aşağıdaki veri çerçevesinde takımın attığı puanların toplamını hesaplamak için data.table paketinin nasıl kullanılacağını gösterir:

 library (data.table)

#create data frame
df <- data.frame(team=c('a', 'a', 'b', 'b', 'b', 'c', 'c'),
                 pts=c(5, 8, 14, 18, 5, 7, 7),
                 rebs=c(8, 8, 9, 3, 8, 7, 4))

#convert data frame to data table 
setDT(df)

#find sum of points scored by team
df[,list(sum= sum (pts)), by=team]

   team sum
1:a 13
2:b37
3:c14

Her üç yöntemin de aynı sonuçları döndürdüğünü unutmayın.

Not: Çok büyük bir veri kümeniz varsa, data.table yöntemi burada listelenen üç yöntemden en hızlı şekilde çalışacaktır.

Ek kaynaklar

R’de grup başına ortalama nasıl hesaplanır
R’de gruba göre nicelikler nasıl hesaplanır

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir