【发布时间】:2020-04-07 20:25:17
【问题描述】:
我有一个巨大的数据框,其中包含多个变量名称,并遵循一个序列。为简化起见,我创建了一个包含 8 个变量的示例,最后 5 个变量遵循列名中的序列: I5min_thresh.118、I5min_thresh.118.5、I5min_thresh.119、I5min_thresh.119.5、I5min_thresh.120)。
变量名中的序列只是一个例子,可以发散,例如变量序列名可以从 60 到 180 步长为 0.1(在本例中为 118 到 120 步长为 0.5 步)。
可重现的数据框:
df<-data.frame(Event=c("yes","yes","yes","no","no","no","no","no","no"),
mois=c(0.3,0.2,0.2,0.3,0.3,0.3,0.3,0.3,0.2),
I_float=c(96.0,100.8,96.0,21.6,10.8,10.8,16.8,8.4,16.8),
Imax.118=c(95.0,105.0,77.0,15.0,5.0,49.7,53.8,51.2,57.8),
Imax.118.5=c(97.0,90.0,100.0,16.0,15.0,50.2,54.3,51.7,58.3),
Imax.119=c(98.0,110.0,78.0,51.4,8.0,50.7,54.8,52.2,58.8),
Imax.119.5=c(99.8,71.0,80.0,51.9,51.2,51.2,55.3,52.7,59.3),
Imax.120=c(54.6,71.5,79.0,52.4,51.7,51.7,55.8,53.2,59.8))
这是数据框的外观:
我想为每个 Imax 计算以下变量,并将其存储在一个新的数据框中:
- 如果 Event=yes,I_float >= Imax 的次数,作为变量 TP。
- 次数 I_float
- 如果 Event=no,I_float >= Imax 的次数,作为变量 FP。
- 如果 Event=no,I_float
生成的数据帧应如下所示,其中 Yintercept 等于包含在 Imax 变量中的序列号:
目前我只计算了 1 个变量的 TP、FN、TN 和 FP,假设变量 Imax.118 通过在 r 代码 (Imax.118) 中准确指示变量名称(上一个示例的第一行)。我不能使用手动方法,因为我在真实数据框中有数百个变量,遵循名称序列。
我们将不胜感激。
【问题讨论】: