精華區beta R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出 [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 我想依group,把日期補足(參考附圖) http://i.imgur.com/ef6uHfT.jpg http://i.imgur.com/UasIAhm.jpg [程式範例]: [環境敘述]: [關鍵字]: -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.105.26 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1496740715.A.A0E.html > -------------------------------------------------------------------------- < 作者: carl090105 (Jing) 看板: R_Language 標題: Re: [問題] 依特定條件補足日期 時間: Tue Jun 6 18:54:51 2017 以下提供兩種方式 library(data.table) library(dplyr) library(lubridate) data <- data.frame(Group = c("A", "A", "B", "B", "C", "C"), Status = rep(c("Start", "End"), times = 3), Date = c("2016/01/01", "2016/01/15", "2016/01/09", "2016/02/01", "2016/01/02", "2016/01/07")) # data.table data %>% setDT %>% .[, .(Date = seq(ymd(.SD[Status == "Start", Date]), ymd(.SD[Status == "End", Date]), by = "days")), by = Group] # dplyr data %>% group_by(Group) %>% do({ subDf <- . Date <- seq(ymd(filter(subDf, Status == "Start")$Date), ymd(filter(subDf, Status == "End")$Date), by = "days") str(Date) return(data.frame(Date = Date)) }) %>% ungroup ※ 引述《menghsuanliu (庫庫少)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出 : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 我想依group,把日期補足(參考附圖) : http://i.imgur.com/ef6uHfT.jpg : http://i.imgur.com/UasIAhm.jpg : [程式範例]: : [環境敘述]: : [關鍵字]: : -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.2.216 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1496746493.A.BDB.html > -------------------------------------------------------------------------- < 作者: celestialgod (天) 看板: R_Language 標題: Re: [問題] 依特定條件補足日期 時間: Tue Jun 6 20:07:44 2017 carl大已經回答的滿完美的 不過有一個函數,我推薦你試試看 full_seq + unnest的應用: library(dplyr) library(tidyr) DF <- data.frame(Group = c("A", "A", "B", "B", "C", "C"), Status = rep(c("Start", "End"), times = 3), Date = as.Date(c("2016/01/01", "2016/01/15", "2016/01/09", "2016/02/01", "2016/01/02", "2016/01/07"))) DF %>% group_by(Group) %>% summarise(Date2 = list(full_seq(Date, 1))) %>% unnest ※ 引述《menghsuanliu (庫庫少)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出 : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 我想依group,把日期補足(參考附圖) : http://i.imgur.com/ef6uHfT.jpg : http://i.imgur.com/UasIAhm.jpg : [程式範例]: : [環境敘述]: : [關鍵字]: : -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.233.49.200 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1496750867.A.503.html ※ 編輯: celestialgod (36.233.49.200), 06/06/2017 20:08:43