【R】dplyr 複数の条件で場合分け+(おまけ:累計数を計算)
複数の条件で場合分けして数値を変換 case_when()の使い方
例えば時刻の「分」を15分単位で離散化したいといった場合を想定。
dplyrのcase_when()関数が使いやすかったのでメモする。
library(tidyverse) #時刻 分 のダミーベクトルを生成する hour <- as.integer( runif(20, min = 0, max = 11) ) minute <- as.integer( runif(20, min = 0, max = 60) ) df <- data.frame(hour=hour, minute=minute) df %>% mutate(minu = case_when( minute >= 0 & minute < 15 ~0, minute >= 15 & minute <30 ~15, minute >= 30 & minute <45 ~30, minute >= 45 ~45) )
累計数を数える関数cumsum()
#仮想データフレーム作成 hour2 <- rep(seq(0,23,1),1,each = 4) minute2 <- rep(seq(0,45,15),24) output <- as.integer( runif(96, min = 10, max = 100) ) df2 <- data.frame(hour=hour2, minute=minute2, output=output) #outputの累計数を数える df2 %>% mutate(sumout = cumsum(output)) ->df3