希望这是有道理的: 我正在以csv文件的形式从同事那里接收数据,每个文件都可以长达数千行。这些文件中有多个列,但最初我感兴趣的2个名称为“target”和“temperature”。 “目标”有多个类别,在每个类别中,“温度”可以有许多(或很少)数据点。 例如:
target temperature
RSV 87.2
RSV 86.9
......
HSV 84.3
HSV 89.7
等
每个目标都有自己定义的温度范围,因此我需要一些方法来定义这些范围,然后计算每个目标的样本数量在定义范围之内或之外。
感激地收到任何和所有建议
答案 0 :(得分:1)
脚本计算范围,然后计算每个目标的样本数量在定义的范围之内或之外
# data from colleagues
df <- data.frame(target=c("RSV", "RSV", "RSV", "RSV",
"HSV", "HSV", "HSV",
"SRV", "SRV", "SRV"),
temperature=c(87.2, 86.9, 86.8, 86.7,
84.3, 89.7, 88.7,
54.3, 59.7, 58.7))
# target with ranges
res <- data.frame(target=character(0),
min.temperature=numeric(0),
max.temperature=numeric(0),
within=numeric(0),
outside=numeric(0))
# targets
l <- levels(df$target)
for(i in 1:length(l)) {
t <- df[df$target==l[i],]$temperature
# some way of defining these ranges
t.min <- min(t)
t.max <- max(t)
# targets in [min; max]
in.range <- df$temperature >= t.min &
df$temperature <= t.max
t.within <- nrow(df[df$target==l[i] & in.range,])
t.outside <- nrow(df[df$target==l[i] & !in.range,])
res <- rbind(res, data.frame(target=l[i],
min.temperature=t.min,
max.temperature=t.max,
within=t.within,
outside=t.outside))
}
print(res)
# target min.temperature max.temperature within outside
# 1 HSV 84.3 89.7 3 0
# 2 RSV 86.7 87.2 4 0
# 3 SRV 54.3 59.7 3 0