【发布时间】:2011-08-31 18:35:11
【问题描述】:
我正在尝试使用 data.table 计算一个简单的比率。不同的文件有不同的 tmax 值,所以我需要ifelse。当我调试它时,dt 看起来不错。 tmaxValue 是单个值(在这种情况下遇到的第一个“t=60”),但t0Value 是 dt 中的所有“t=0”值。
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])
}
我得到的是tmaxValue 的Result 除以所有Result 的所有t0Value,但我想要的是每个唯一@987654329 的单一比率@。
感谢您的帮助。
【问题讨论】:
-
...您能澄清一下您的数据是什么吗?好像是
data.table,因为你使用Ratio:=tmaxValue/t0Value]?一个小的可重现的例子会很好。 -
+1 对于 Tommy 对可重复数据的请求。此外,请进行编辑以简化每个
dt[which(dt[,Time] == "t=240min"),Result]至dt[Time=="t=240min",Result]。即便如此,我们也不喜欢i中的==(参见关于矢量扫描的介绍小插曲),但至少我们正在取得进展……
标签: r if-statement data.table