根据另一列中的值聚合一列中的数据
我知道有一个简单的方法可以做到这一点......但是,我无法弄清楚。
我的 R 脚本中有一个数据框,如下所示:
A B C
1.2 4 8
2.3 4 9
2.3 6 0
1.2 3 3
3.4 2 1
1.2 5 1
请注意,A、B 和 C 是列名称。我正在尝试获取这样的变量:
sum1 <- [the sum of all B values such that A is 1.2]
num1 <- [the number of times A is 1.2]
有什么简单的方法可以做到这一点吗? 我基本上希望得到一个如下所示的数据框:
A num totalB
1.2 3 12
etc etc etc
其中“num”是特定 A 值出现的次数,“totalB”是给定 A 值的 B 值的总和。
I know there is an easy way to do this...but, I can't figure it out.
I have a dataframe in my R script that looks something like this:
A B C
1.2 4 8
2.3 4 9
2.3 6 0
1.2 3 3
3.4 2 1
1.2 5 1
Note that A, B, and C are column names. And I'm trying to get variables like this:
sum1 <- [the sum of all B values such that A is 1.2]
num1 <- [the number of times A is 1.2]
Any easy way to do this?
I basically want to end up with a data frame that looks like this:
A num totalB
1.2 3 12
etc etc etc
Where "num" is the number of times that particular A value appeared, and "totalB" is the sum of the B values given the A value.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我将使用
aggregate
来获取两个聚合,然后将它们合并
到一个数据帧中:I'd use
aggregate
to get the two aggregates and thenmerge
them into a single data frame:在 dplyr 中:
In
dplyr
:这是使用
plyr
包的解决方案Here is a solution using the
plyr
package这是一个使用
data.table
提高内存和时间效率的解决方案仅对
C==1
的行进行子集化(根据 @aix 答案的评论)Here is a solution using
data.table
for memory and time efficiencyTo subset only rows where
C==1
(as per the comment to @aix answer)