我想按一定的时间间隔分割数据。
让我们举个例子。这是var files = []; //array containing the file paths, e.g. "/download/file.exe"
files.forEach(file => {
document.write(`<a href="${file}" download>
<button>Download ${file}</button>
</a>`)
})
,它嵌入在var files = []; //array containing the file paths, e.g. "/download/file.exe"
var filenames = []; //array containing the file names, e.g. "File.exe"
files.forEach((file, index) => {
document.write(`<a href="${file}" download>
<button>Download ${filenames[index]}</button>
</a>`)
})
包中。为简化起见,我只考虑其haartdat
(ID)为1
ipw
在此数据中,时间间隔为“ 100”。我在开始治疗后的100、200、300,.... 2800(例如小时)中观察到患者1。 2900小时后,观察结束。列出了每个时间间隔内的其他信息(例如patient
,data("haartdat")
testset<-haartdat%>%filter(tstart>=0 & patient==1)
patient tstart fuptime haartind event sex age cd4.sqrt endtime dropout
1 1 0 100 0 0 1 22 25.59297 2900 0
2 1 100 200 0 0 1 22 23.47339 2900 0
3 1 200 300 0 0 1 22 24.16609 2900 0
4 1 300 400 0 0 1 22 23.23790 2900 0
5 1 400 500 0 0 1 22 24.85961 2900 0
6 1 500 600 0 0 1 22 25.94224 2900 0
,sex
)。
我想将间隔缩短50。因此,数据将像
age
我使用了cd4.sqrt
函数,该函数嵌入在 patient tstart fuptime haartind event sex age cd4.sqrt endtime dropout
1 1 0 50 0 0 1 22 25.59297 2900 0
2 1 50 100 0 0 1 22 25.59297 2900 0
3 1 100 150 0 0 1 22 23.47339 2900 0
4 1 150 200 0 0 1 22 23.47339 2900 0
5 1 200 250 0 0 1 22 24.16609 2900 0
6 1 250 300 0 0 1 22 24.16609 2900 0
包中。它按一定的数字单位拆分数据。但是,它将它从零拆分。
timeSplitter
如您所见,Greg
是从0开始的。之后,我使用了test1 <-
test %>%
timeSplitter(by = 50, # The time that we want to split by
event_var = "event",
time_var = "fuptime",
event_start_status = 0)
head(test1)
patient tstart haartind event sex age cd4.sqrt endtime dropout Start_time Stop_time
1 1 0 0 0 1 22 25.59297 2900 0 0 50
2 1 0 0 0 1 22 25.59297 2900 0 50 100
3 1 100 0 0 1 22 23.47339 2900 0 0 50
4 1 100 0 0 1 22 23.47339 2900 0 50 100
5 1 100 0 0 1 22 23.47339 2900 0 100 150
6 1 100 0 0 1 22 23.47339 2900 0 150 200
中的Start_time
,将filter
下面的数据切掉了。
dplyr
这些数据正是我所期望的。但是,它过于计算。如果我将其减少1或患者人数增加,则需要更多时间。
如何使这一过程更有效?
(此外,如果没有使用tstart
的其他解决方案,我将不胜感激)