r - 如何在R中按组创建一个新变量,它是列的总和?
问题描述
我正在尝试在我的数据框中创建一个新变量,它是变量的特定于组的总和。例如:
df <- data.frame (group = c(1, 1, 1, 2, 2, 2),
variable = c(1, 2, 1, 3, 4, 5)
)
df
group variable
1 1 1
2 1 2
3 1 1
4 2 3
5 2 4
6 2 5
我想要一个按组对变量求和的新变量,以获得如下所示的内容:
group variable sum
1 1 1 4
2 1 2 4
3 1 1 4
4 2 3 12
5 2 4 12
6 2 5 12
谢谢!
解决方案
碱基R
with(df, ave(variable, group, FUN = sum))
# [1] 4 4 4 12 12 12
(用 重新分配到框架中df$sum <- with(df, ...)
。)
dplyr
library(dplyr)
df %>%
group_by(group) %>%
mutate(sum = sum(variable)) %>%
ungroup()
# # A tibble: 6 x 3
# group variable sum
# <dbl> <dbl> <dbl>
# 1 1 1 4
# 2 1 2 4
# 3 1 1 4
# 4 2 3 12
# 5 2 4 12
# 6 2 5 12
数据表
library(data.table)
DF <- as.data.table(df)
DF[, sum := sum(variable), by = .(group) ]
DF
# group variable sum
# 1: 1 1 4
# 2: 1 2 4
# 3: 1 1 4
# 4: 2 3 12
# 5: 2 4 12
# 6: 2 5 12
推荐阅读
- android - 密码生成器显示 kotlin.Unit
- postgresql-11 - PostgreSQL 可以对 1 个 IP 范围进行 md5 身份验证,对另一个 IP 范围进行证书身份验证吗?
- python - 在 Visual Studio 2017 中使用 LSTM 层创建 keras 模型时出现 NotImplementedError
- android - 使用charts_flutter包时,如何使用从提供程序文件中获取的值设置条形的颜色
- python-3.x - 无法从python中的列表中删除一些重复的元素
- python - 在 Selenium、Chrome、Python 中向下滚动一定量
- c++11 - 带有 OfStream 的只读文件系统
- sql - 将 ASP.NET Core 应用程序发布到 Azure 不起作用
- pyspark - 如何找到pyspark数据框的大小
- python - 使用 Python 使用 oAuth2 的 Rest API 身份验证问题