Re: [問題] 拆解time-dependent的資料

看板R_Language作者 (攸藍)時間9年前 (2015/04/22 15:50), 9年前編輯推噓0(002)
留言2則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《yummy7922 (crucify)》之銘言: : [問題類型]: : : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : : [軟體熟悉度]: : 請把以下不需要的部份刪除 : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 請簡略描述你所要做的事情,或是這個程式的目的 : 資料是多個人的重複測量資料,每個人的觀察筆數並不相同, : 其中有一個會變動的變數(ex:用藥資料,某幾次有吃,某些次沒有吃), : 資料大概是長這樣: : ID M1 duration IS ID start stop M1 IS : 1 1 1 0 1 0 1 1 0 : 1 0 2 0 1 1 4 0 1 : 1 0 3 0 2 0 3 1 0 : 1 0 4 1 2 3 5 0 0 : 2 1 1 0 3 0 1 1 0 : 2 1 2 0 ---> 3 1 2 0 1 : 2 1 3 0 : 2 0 4 0 : 2 0 5 0 : 3 1 1 0 : 3 0 2 1 : 資料中M1是會變動的變數,is是我的outcome, : 希望可以轉變成右方的樣子,即,如果有資料變動就做紀錄, : 就是一般要處理time-dependent survival的樣子, : 目前只知道sas該怎麼處理,想來請教各位, : R應該怎麼做轉換,謝謝大家 I do not know whether there is a function to do this in R, but I do this by dplyr. library(data.table) library(dplyr) library(magrittr) dat = data.frame(ID = rep(1:3, c(4, 5, 2)), M1 = c(1,rep(0:1, each=3),0,0,1,0)) %>% tbl_dt(FALSE) %>% group_by(ID) %>% mutate(duration = 1:length(M1), IS = 0) dat$IS[c(4, 11)] = 1 dat %>% group_by(ID) %>% summarise(stop = cumsum(rle(M1)$lengths), M1 = rle(M1)$values, IS = IS[cumsum(rle(M1)$lengths)]) %>% group_by(ID) %>% mutate(start = c(0, stop[1:(length(stop)-1)])) ID stop M1 IS start 1 1 1 1 0 0 2 1 4 0 1 1 3 2 3 1 0 0 4 2 5 0 0 3 5 3 1 1 0 0 6 3 2 0 1 1 # update my code, 20150422 23:44 dat %>% group_by(ID) %>% { tmp = use_series(., IS) extract(.,, rle(M1), by =ID) %>% group_by(ID) %>% mutate(start = c(0, cumsum(lengths)[-length(lengths)]), stop = cumsum(lengths)) %>% ungroup() %>% mutate(IS = tmp[cumsum(lengths)]) %>% setnames("values", "M1") %>% select(-lengths) } ID M1 start stop IS 1 1 1 0 1 0 2 1 0 1 4 1 3 2 1 0 3 0 4 2 0 3 5 0 5 3 1 0 1 0 6 3 0 1 2 1 當然只要有group_by 都可以用tapply做,只是比較麻煩就不寫了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.27.107 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1429689054.A.45E.html

04/22 19:53, , 1F
%<>%
04/22 19:53, 1F

04/22 20:19, , 2F
對吼,還有這個,謝謝提點
04/22 20:19, 2F
※ 編輯: celestialgod (36.225.239.69), 04/22/2015 23:45:57
文章代碼(AID): #1LDrBUHU (R_Language)
文章代碼(AID): #1LDrBUHU (R_Language)