我有一个这样的数据框:
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)
但它没有给我我想要的东西.
你快到了.
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$A和my.df$B.