Exploratory コミュニティ

自転車のレンタルデータから考えるリア充度についての考察

#1

@Kei_Saito

ExploratoryのKeiのEDASalonの投稿です!

Twitter @kei51e

コメントやフィードバックはこちらのトピックかTwitterでお願いします!

#2

@Kei_Saito さん

自転車のレンタルデータから考えるリア充度についての考察 楽しく読ませて頂きました!

文末に記載されていた、下記のデータ加工の部分ですが、

また、データを毎時間ごとのデータから1行1ユーザのデータに変換する、というところがかなり強引なので、もしもっといいやり方を知っている方がいたらぜひ教えて下さい!

(function(df){ 
  l <- lapply(df$value, function(x){ return (rep(1,x)) })  
  df$l <- l 
  df
}) %>%
  unnest(l, .drop = FALSE)

dplyr::slice()を使うのはいかがでしょうか。ベンチマークは測ってないのでlapply(*) %>% unnest(*)に比べて高速かどうかはわかりませんが…

library(dplyr)

df <- tibble(id = paste0("Row",1:5),
             value = c(2,1,NA_real_,5,3))

df
# # A tibble: 5 x 2
#    id    value
#   <chr>  <dbl>
# 1 Row1      2
# 2 Row2      1
# 3 Row3     NA
# 4 Row4      5
# 5 Row5      3

# df$valueの値分、行をリピートさせる。
df %>% 
  dplyr::filter(!is.na(value)) %>% 
  dplyr::slice(rep(1:n(), times = value))

# A tibble: 11 x 2
#     id    value
#   <chr>   <dbl>
#  1 Row1      2
#  2 Row1      2
#  3 Row2      1
#  4 Row4      5
#  5 Row4      5
#  6 Row4      5
#  7 Row4      5
#  8 Row4      5
#  9 Row5      3
# 10 Row5      3
# 11 Row5      3

お手すきの際に、ご確認いただけますと幸いです!