我想使用 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)
如果您x首先重新定义(cbind使两列都成为因子),
x<-data.frame(group,replicate)
Run Code Online (Sandbox Code Playgroud)
你可以使用这个:
merge(x,aggregate(replicate~group,x,FUN=max),all.x=TRUE,by="group")
group replicate.x replicate.y
1 A 1 5
2 A 2 5
3 A 3 5
4 A 4 5
5 A 5 5
6 B 1 2
7 B 2 2
8 C 1 3
9 C 2 3
10 C 3 3
Run Code Online (Sandbox Code Playgroud)
尝试
# This is how you create your data.frame
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(group,replicate) # here you don't need c()
# Here's my solution
Max <- tapply(x$replicate, x$group,max)
data.frame(x, max.per.group=rep(Max, table(x$group)))
group replicate max.per.group
1 A 1 5
2 A 2 5
3 A 3 5
4 A 4 5
5 A 5 5
6 B 1 2
7 B 2 2
8 C 1 3
9 C 2 3
10 C 3 3
Run Code Online (Sandbox Code Playgroud)