-1
我试图计算使用data.table一个简单的比例。不同的文件有不同的tmax值,所以我需要ifelse
。当我调试时,dt看起来不错。所述tmaxValue
是一个单一的值(第一“T = 60”,在这种情况下遇到的),但t0Value
是所有的“t = 0时”值的DT。问题与data.table ifelse行为
summaryDT <- calculate_Ratio(reviewDT[,list(Result, Time), by=key(reviewDT)])
calculate_Ratio <- function(dt){
tmaxValue <- ifelse(grepl("hhep", inFile, ignore.case = TRUE),
dt[which(dt[,Time] == "t=240min"),Result],
ifelse(grepl("hlm",inFile, ignore.case = TRUE),
dt[which(dt[,Time] == "t=60"),Result],
dt[which(dt[,Time] == "t=30"),Result]))
t0Value <- dt[which(dt[,Time] == "t=0"),Result]
return(dt[,Ratio:=tmaxValue/t0Value])
}
我所走出的是Result
为tmaxValue
由所有Result
的所有t0Value
的的划分,但我要的是为每一个独特by
一个比例。
感谢您的帮助。
...你能澄清你的数据是什么?这似乎是'data.table',因为你使用'Ratio:= tmaxValue/t0Value]'?一个小的可重复的例子会很好。 – Tommy
+1对于汤米对可重现数据的请求。另外,请编辑以简化每个'dt [which(dt [,Time] ==“t = 240min”),Result]'到'dt [Time =='t = 240min',Result]'。即使那样,我们也不喜欢'i'中的'=='(参见介绍小插曲关于_vector scanning_),但至少我们正在取得进展...... –