【发布时间】:2023-02-03 02:16:20
【问题描述】:
我有一些关于按执行的任务观察到的化学品浓度的数据。三个人,每人执行两项任务,每项任务重复两次。在五个时间点同时测量三种不同化学物质的浓度。人 A 只完成了两次重复,并且缺少其他一些注意力。 数据如下所示:
test_dt <- data.table(person = rep(LETTERS[1:3],each = 20),
task = rep(LETTERS[24:25], each = 10),
reps = rep(c(1,2),each = 5),
time = 1:5, chem1 = rnorm(60,1,0.2),
chem2 = rnorm(60,4,1.1),chem3 = rnorm(60,2,0.75))
test_dt[person == "A" & reps == 2,`:=`(chem3 = NA_real_)]
test_dt[person == "B" & task == "X" & reps == 1 &time %in% 3:5,chem1 := NA_real_]
test_dt[person == "C" & task == "Y" & reps == 2 &time %in% 3:4,chem2 := NA_real_]
我想通过任务和重复获取每个人的数据第一个 NA 和 NA 结束的时间。我试过这样做:
lapply(c("chem1","chem2","chem3"),function(var){
start_var = paste0("na_start_",var)
end_var = paste0("na_end_",var)
test_dt[is.na(get(var)),
.(deparse(substitute(start_var)) = min(time),
deparse(substitute(end_var)) = max(time)),
.(person,task,reps)]
})
但最终出现了这个错误:
" test_dt[is.na(get(var)),
.(deparse(substitute(start_var)) ="
> deparse(substitute(end_var)) = max(time)),
Error: unexpected ')' in " deparse(substitute(end_var)) = max(time))"
> .(person,task,reps)]
Error: unexpected ']' in " .(person,task,reps)]"
> })
Error: unexpected '}' in "}"
我如何在 R 中的 data.table 中执行此操作?
【问题讨论】:
标签: r data.table