我是R的新手并拥有一个大型数据集,我需要检查这两个值中的一个是否超过阈值;如果确实如此,我需要计算它,如果不这样做,我会忽略该值。
我必须迭代几列,但我遇到的问题是我的if语句只检查第一个值。一个简单的例子就是列id
,val1
,val2
,val3
。如果val1
或val2
大于阈值,那么我会计算val3
否则忽略。我的数据集名为data
。
id val1 val2 val3
1 .4 4 10
2 5 5 11
3 2 2 1
4 6 1 10
5 2 100 4
我的代码是:
if(data$val1 > 5 | data$val2 > 5){sum(data$val3>5)}
问题是它只检查第一行。我怎样才能遍历每一行?
答案 0 :(得分:0)
with(data, sum(val3[pmax(val1, val2) > 5]))
[1] 14
答案 1 :(得分:0)
sum(data$val3[data$val1 > 5 | data$val2 > 5])
答案 2 :(得分:0)
我们也可以使用rowSums
sum(rowSums(df1[c('val1', 'val2')]>5)>0)
#[1] 2