返回一列值和的第一行的函数大于数字R.

时间:2016-12-20 11:45:37

标签: r

我想从数据框中选择第一行,条件是列中值的总和大于某个数字。例如,取数据集汽车。假设我想根据第二列中的值选择行。如果我的数字是7,那么第一和第二行将被选择,前两行的第二列中的值是(2 + 10)> 7);如果数字是34,将选择前4行(2 + 10 + 4 + 22> 34)

我尝试了以下操作,无论输入值是什么,都会返回所有行

foo<-function (z) {
  for (i in 1: nrow (cars)) {
  if(sum(cars[i,2])<z) {
    sum(cars[1:i,2])
  } else {
    return (cars[1:i,])
     }
  }
  return (cars[1:i,])
}

我也尝试过使用while,但最终只有第一个值无休止地返回。

1 个答案:

答案 0 :(得分:2)

我们可以使用cumsum

进行which
cars[seq(which.max(cumsum(cars$dist)>34)),]

这可以成为一个函数

f1 <- function(dat, col, thresh){
         dat[seq(which.max(cumsum(dat[[col]])> thresh)),]
 }

f1(cars, "dist", 34)
#   speed dist
#1     4    2
#2     4   10
#3     7    4
#4     7   22

f1(cars, "dist", 7)
#   speed dist
#1     4    2
#2     4   10