因此,我有一张表格(〜2000行,称为df1),该表格用于说明特定受试者在特定日期接受药物治疗的时间,并且我有一个较大的excel文件(> 100万行)用于受试者的体重数据不同的日期(称为df2)。
目标:我想按主题分组并找到df2中的权重,该权重是使用sqldf在df1中最接近药物管理时间记录的(因为表格太大,无法加载到R中)。或者,我可以设置一个感兴趣的时间范围(例如,服药+/- 1周),然后找到该时间范围内的一行。
示例:
df1 <- data.frame(
PtID = rep(c(1:5), each=2),
Dose = rep(seq(100,200,25),2),
ADMIN_TIME =seq.Date(as.Date("2016/01/01"), by = "month", length.out = 10)
)
df2 <- data.frame(
PtID = rep(c(1:5),each=10),
Weight = rnorm(50, 50, 10),
Wt_time = seq.Date(as.Date("2016/01/01"), as.Date("2016/10/31"), length.out = 50)
)
因此,我想我想将df1和df2加入left_join,按PtID分组,并设置一些条件,该条件使用df1 $ Admin_time周围可接受的范围来标识最接近df1 $ Admin_time的df2 $ Weight或df2 $ Weight。 sql格式。
所以我尝试创建一个范围,然后查询以下内容:
library(dplry)
library(lubridate)
df1 <- df1 %>%
mutate(ADMIN_START = ADMIN_TIME - ddays(30),
ADMIN_END = ADMIN_TIME + ddays(30))
#df2.csv is the large spreadsheet saved in my working directory
result <- read.csv.sql("df2.csv", sql = "select Weight from file
left join df1
on file.Wt_time between df1.ADMIN_START and df1.ADMIN_END")
这将运行,但是它不会导致任何结果,我必须逃避它。任何想法表示赞赏。
谢谢!