在另一列定义的间隔之间的列中汇总对象

mat*_*teo 4 r

我有一个这样的数据框:

  df
       A B
 [1,]  1 4
 [2,]  2 3
 [3,]  3 5
 [4,]  4 7
 [5,]  5 5
 [6,]  6 7
 [7,]  7 4
 [8,]  8 7
 [9,]  9 3
[10,] 10 7
Run Code Online (Sandbox Code Playgroud)

我需要将B列中的数字加到A列定义的特定区间之间.例如,将A中的数值加到A≥1和A <3之间.

我想用这个:

> sum(which(df$B[df$A>=1] & df$B[df$A<3]))
Run Code Online (Sandbox Code Playgroud)

但它没有给我我想要的东西.

Rom*_*rik 9

你快到了.

with(my.df, sum(my.df[A >= 1 & A < 3, "B"]))
Run Code Online (Sandbox Code Playgroud)

编辑

大通挑战我解释手头的代码.阅读R代码时,最好从内向外读取.开始了.

my.df是一个包含列A和的data.frame(想想Excel表)B.方括号[]用于从这个对象中对任何东西进行子集,如下所示:[rows, columns].例如,[1, ]将返回整个第一行,如果添加列号(或列名称),则在该列的第一行中获取值(例如[1, 2],您将在第二列的第一行中获取值).我们现在将my.df使用A >= 1 & A < 3.我们在这里说的是我们希望看到那些值A大于或等于1且小于3的行.这将为我们提供满足此条件的所有行.如果我们添加, "B"它意味着我们想要选择列B.由于我们已将结果子集化为仅包含符合上述条件的行,因此通过输入列名,B我们仅在列中获取值.从列中获取这些值后,B可以使用它们进行求和sum().使用with功能可以让我们的生活更轻松.如果我们没有使用,我们将被迫通过其全名调用列my.df$Amy.df$B.