我有一个带有分组变量的数据帧,我想按组对它们求和。使用dplyr
很容易。
library(dplyr)
library(magrittr)
data <- data.frame(group = c("a", "a", "b", "c", "c"), n1 = 1:5, n2 = 2:6)
data %>% group_by(group) %>%
summarise_all(sum)
# A tibble: 3 x 3
group n1 n2
<fctr> <int> <int>
1 a 3 5
2 b 3 4
3 c 9 11
但是现在我想要一个新的列,按组计算n1和n2的总和。这样地:
# A tibble: 3 x 3
group n1 n2 ttl
<fctr> <int> <int> <int>
1 a 3 5 8
2 b 3 4 7
3 c 9 11 20
我如何使用dplyr?
编辑:实际上,这只是一个例子,我有很多变量。
我试过这两个代码,但它不在正确的维度上......
data %>% group_by(group) %>%
summarise_all(sum) %>%
summarise_if(is.numeric, sum)
data %>% group_by(group) %>%
summarise_all(sum) %>%
mutate_if(is.numeric, .funs = sum)
基数R
cbind(aggregate(.~group, data, sum), ttl = sapply(split(data[,-1], data$group), sum))
# group n1 n2 ttl
#a a 3 5 8
#b b 3 4 7
#c c 9 11 20
我们可以将应用与dplyr函数一起使用。
data <- data.frame(group = c("a", "a", "b", "c", "c"), n1 = 1:5, n2 = 2:6)
data %>% group_by(group) %>%
summarise_all(sum) %>%
mutate(ttl = apply(.[, 2:ncol(.)], 1, sum))
# A tibble: 3 × 4
group n1 n2 ttl
<fctr> <int> <int> <int>
1 a 3 5 8
2 b 3 4 7
3 c 9 11 20
或者rowSums
使用相同的策略。关键是使用。
指定数据帧,[]
使用x: ncol(.)
保留您想要的列。
data %>% group_by(group) %>%
summarise_all(sum) %>%
mutate(ttl = rowSums(.[, 2:ncol(.)]))
# A tibble: 3 × 4
group n1 n2 ttl
<fctr> <int> <int> <dbl>
1 a 3 5 8
2 b 3 4 7
3 c 9 11 20
您可以在总结
之后使用Mutate
:
data %>%
group_by(group) %>%
summarise_all(sum) %>%
mutate(tt1 = n1 + n2)
# A tibble: 3 x 4
# group n1 n2 tt1
# <fctr> <int> <int> <int>
#1 a 3 5 8
#2 b 3 4 7
#3 c 9 11 20
如果需要对所有数值列求和,您可以使用带有select_If(选择数值列)的行和对列求和:
data %>%
group_by(group) %>%
summarise_all(sum) %>%
mutate(tt1 = rowSums(select_if(., is.numeric)))
# A tibble: 3 x 4
# group n1 n2 tt1
# <fctr> <int> <int> <dbl>
#1 a 3 5 8
#2 b 3 4 7
#3 c 9 11 20
我在ID号中包含姓名数据以及许多关联值。它看起来像这样: 我想创建名称的所有组合,不管有多少个,并将它们粘贴在一起,用逗号分隔,并在每个id中求其编号和值的总和。上述示例的预期输出为: 谢谢大家!
我试图在一个数据集中的多个主题上求和多个变量。我知道如何使用plyr包来实现这一点;然而,由于数据集的长度,变量的数量,以及我试图做的不同滚动和的数量(2天,3天,4天等)。我想知道是否有人有更多的时间,更有效的方式来完成这项任务在DPLYR。 我的数据与此类似: 谢谢你。
我想用多个变量分组,用数字求和,用java中的list得到结果。与SQL group by一样,我希望将数据记录与最低的字符串合并。我想做的与下面的SQL相同, 如果数据存在于下面的项目表中, 我预计结果会在下面。当用orderId按00-82-947和00-82-952分组时,我想像SQL分组一样得到较低的一个。 如何在Java中实现这一点?我认为这对我来说是可行的,但在这种情况下,未按分组的o
问题内容: 我正在寻找使用for循环来创建多个在迭代(i)上命名的变量,并为每个变量分配一个唯一的int。 如您所见,我迷路了。理想情况下,我正在寻找输出 有什么建议? 问题答案: 您可以一站式完成所有操作 然后您可以使用 但是使用列表而不是字典可能更好 然后您可以使用 甚至(获得前三个学期)
问题内容: 我想用Python(不是数组)中的一个创建10个变量。像这样: 我想创建的变量名,在这种情况下: ,,,…, 我不想一个数组 我有一个坐标图(640 x 480)。我正在确定像素颜色为白色的坐标。地面上有3个球,我想获取每个球的中心坐标,因此,如果要评估的坐标距离最后一个球很近,则x和y坐标将被平均(如果该坐标属于a)新球的坐标将属于新坐标组。 问题答案: 您不应该这样做,但是如果您真
我有一个国家和年份级别的面板数据集,我想根据现有的变量创建两个新变量。 我想做的是创建两个新变量集:(1)每年(跨国家)平均值的变量集和(2)国家/地区值相对于年平均值的变量集。例如,对于 var1(1) 将产生 mean_var1 和 (2) relmean_var1我希望这些变量用于所有其他变量。总的来说,数据集中有超过1000个变量,但我只将此函数应用于大约6个。 我有适用于第一部分的代码,