データ穴リストのブログ

すべては喰いっぱぐれないために

dplyrで平均年齢を計算する。

はい、もうなんでもいいから小出しで記事更新を試みます。 まず書く。

ということで、世のデータサイエンティストさんとは縁遠い、「平均年齢の求め方」を書きます。 dplyrで。

しかも割とこう、スマートではない感じです。

↓こういう数表があったとき、意外と結構な人が そのまま人数合計しちゃったりするわけですが(いや意味わからんけども)、 じゃぁそれをdplyrでやるとどうなるかをちょっとやってみました (単に仕事で計算したからネタにしただけです)。

年齢 人数
20代 150
30代 15
40代 1500
50代 1
require(tidyverse)

# 平均年齢を計算する(加重平均)

df <- data.frame(kind = letters[1:5],
                 age = c(11,12,13,14,15,16,17,18,19,20, NA),
                 uniq_count = sample(x = c(1:1000), size = 55))

df %>% group_by(kind) %>% mutate(sum_ageuniq = age * uniq_count) %>% 
  summarise_at(.vars = 4, funs(ave_age = sum(sum_ageuniq, na.rm = TRUE) / sum(uniq_count, na.rm = TRUE),
                               total_user = sum(uniq_count, na.rm = TRUE)))

mutate部分をsummariseの中でやりゃ一発かしらね。

まぁ、とりあえず。