精華區beta R_Language 關於我們 聯絡資訊
我忘記在哪學到下面這招的,剛剛要找都找不到相關的文章~"~ 如果有誰還記得再麻煩告知我一下,謝謝。 19:34補充: 我找到了,是#1KzOu2X8 (R_Language),他用matrix去創資料的方式很特別XD 所以後來腦海中有這個印象,不過跟這篇無關拉,只是一個小技巧而已 library(data.table) library(plyr) library(dplyr) library(magrittr) DT = fread(' id date 1 1204 1 1205 1 1209 1 1210 1 1211 2 1201 2 1202 2 1205 2 1207 3 1204 3 1206', header = TRUE, colClasses = c('integer', 'character')) DT %>% mutate(date2 = gsub('(\\d{2})(\\d{2})', '2015-\\1-\\2', date) %>% as.Date) %>% group_by(id) %>% mutate(diffDay = diff(c(date2[1]-2, date2))) %>% ungroup %>% mutate(num = cumsum(ifelse(diffDay > 1, 1L, 0L))) %>% select(id, date, num) # Source: local data table [11 x 3] # # id date num # (int) (chr) (int) # 1 1 1204 1 # 2 1 1205 1 # 3 1 1209 2 # 4 1 1210 2 # 5 1 1211 2 # 6 2 1201 3 # 7 2 1202 3 # 8 2 1205 4 # 9 2 1207 5 # 10 3 1204 6 # 11 3 1206 7 ※ 引述《tHEiPHoNe ( )》之銘言: : 有一組消費者資料 : id date : 1 1204 : 1 1205 : 1 1209 : 1 1210 : 1 1211 : 2 1201 : 2 1202 : 2 1205 : 2 1207 : 3 1204 : 3 1206 : 若同一user不間斷天數消費則計算為同一筆 : 不同user或是間斷消費天數則計入下一筆 : 如下 : id date num : 1 1204 1 : 1 1205 1 : 1 1209 2 : 1 1210 2 : 1 1211 2 : 2 1201 3 : 2 1202 3 : 2 1205 4 : 2 1207 5 : 3 1204 6 : 3 1206 7 : 想請問有建議使用的function嗎? : 謝謝 -- R資料整理套件系列文: magrittr #1LhSWhpH (R_Language) http://tinyurl.com/1LhSWhpH data.table #1LhW7Tvj (R_Language) http://tinyurl.com/1LhW7Tvj dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/1LhpJCfB dplyr(下) #1Lhw8b-s (R_Language) tidyr #1Liqls1R (R_Language) http://tinyurl.com/1Liqls1R -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.218.152.118 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1452078719.A.79C.html ※ 編輯: celestialgod (180.218.152.118), 01/06/2016 19:34:48