我想要计算mean(或任何其他摘要长度之一,例如统计min,max,length,sum)的数值变量("值")的分组变量("基团")的每个水平内.
摘要统计应该被分配到具有一个新的变量相同的长度为原始数据.即,原始数据中的每一行应该具有对应于当前组值的值-该数据组应该不被折叠,以便每组中的一行.例如,考虑组mean:
之前
id group value
1 a 10
2 a 20
3 b 100
4 b 200
Run Code Online (Sandbox Code Playgroud)
后
id group value grp.mean.values
1 a 10 15
2 a 20 15
3 b 100 150
4 b 200 150
Run Code Online (Sandbox Code Playgroud) 我想使用 R 在我的数据集中创建一个新列,其中包含每个唯一组的最大值。我的数据如下所示:
group<-c("A","A","A","A","A","B","B","C","C","C")
replicate<-c(1,2,3,4,5,1,2,1,2,3)
x<-data.frame(cbind(group,replicate))
Run Code Online (Sandbox Code Playgroud)
我想创建如下所示的第三列 - 每组的最大值。
group replicate max.per.group
A 1 5
A 2 5
A 3 5
A 4 5
A 5 5
B 1 2
B 2 2
C 1 3
C 2 3
C 3 3
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用dplyr将聚合列添加到数据框。这是我想到的一个例子:
gender <- c("male", "female", "male")
age <- c(25, 30, 56)
weight <- c(160, 110, 220)
mydata <- data.frame(gender, age, weight)
Run Code Online (Sandbox Code Playgroud)
我先按性别将数据框mydata分组,然后再进行汇总计算以按性别查找平均权重:
library(dplyr)
mydata <- group_by(mydata, gender)
mydata2 <- summarise(mydata, wt=mean(weight))
Run Code Online (Sandbox Code Playgroud)
有没有办法在与上述相同的步骤中将平均权重的列添加到原始数据帧中?在SQL中,我将使用以下代码行实现此目的:
SELECT gender, age, weight, avg(weight) as avg_wt FROM mydata GROUP BY gender
Run Code Online (Sandbox Code Playgroud)
我意识到这是一个非常基本的问题,但是我是R语言的新手,我似乎在任何地方都找不到答案。