我有一个数据集df,我想在指标上测试,有多少值大于测试阈值。例如,对于A,我想测试它有多少超过阈值1的-1,有多少超过阈值2的-0.5,阈值3的1和阈值4的2。问题是我的测试阈值对于每个A,B和c都是不同的,我该如何循环呢?
df >
A B C
1 5 2
2 12 3
3 -1 4
4 0 6
5 -9 -13
6 0.1 2
7 1 3
测试阈值
ID value1 value2 value3 value4
A -1 -0.5 1 2
B 1 6 9 12
C 3 3.2 3.4 3.5
A的期望输出
ID value1 value2 value3 value4
A 7 7 6 5
假设测试阈值存储在名为test
的数据框中,您可以将其按行拆分,并使用Map
来查找每个ID
的输出,有多少值大于每个阈值。
Map(function(x, y) colSums(sapply(y, `<`, x)), df, asplit(test[-1], 1))
#$A
#value1 value2 value3 value4
# 7 7 6 5
#$B
#value1 value2 value3 value4
# 2 1 1 0
#$C
#value1 value2 value3 value4
# 2 2 2 2