我有一个这样的数据框:
Expt Replicate
A 1
A 2
A 3
B 1
B 2
B 3
C 1
C 2
C 3
C 4
我想返回每个实验的重复次数。像这样:
Expt #Reps
A 3
B 3
C 4
这必须非常简单,但我尝试了一些像
这样的东西ddply(df, Expt, .fun=max(Replicate))
没有运气。请帮忙。
答案 0 :(得分:4)
table
是你的朋友。您甚至不需要第二列,table
会为您计算第一列中的项目:
> x <- c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C')
> x
[1] "A" "A" "A" "B" "B" "B" "C" "C" "C" "C"
> table(x)
x
A B C
3 3 4
答案 1 :(得分:4)
data.table
解决方案(计算重复次数)
library(data.table)
df <- data.table(df)
df[,list(max = .N),by='Expt']
如果您想要最大列,请使用
df[,list(max = max(Replicate)),by='Expt']
答案 2 :(得分:3)
谢谢大家。我也发现这个有用:
aggregate(as.numeric(df$Replicate), list(exptCount=df$expt),max)
答案 3 :(得分:2)
实现目标的另一种方法是
> df <- data.frame(Expt = rep(c('A', 'B', 'C'), c(3,3,4)), Replicate = append(rep(1:3, 3), 4, 10))
> tapply(df$Replicate, df$Expt, max)
A B C
3 3 4
但如果您真的想使用ddply
,可以尝试:
library(plyr)
ddply(df,.(Expt),numcolwise(max))
答案 4 :(得分:-1)
另一种简单的方法:
summary(df[,1]) #where df is your data frame and you want the 1st column counts ("Expt")
注意:第一列是factor
,这适用于factor