1

私はこのようなデータフレームを持っています:

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))

運がない。助けてください。

4

5 に答える 5

4

tableあなたの友だちです。2番目の列も必要ありません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 
于 2012-07-11T23:28:34.070 に答える
4

解決策(複製のdata.table数を数えるため)

library(data.table)
df <- data.table(df)
df[,list(max = .N),by='Expt']

最大の列が必要な場合は、

df[,list(max = max(Replicate)),by='Expt']
于 2012-07-12T00:01:42.053 に答える
3

みんな、ありがとう。私もこの作品を見つけました:

aggregate(as.numeric(df$Replicate), list(exptCount=df$expt),max)
于 2012-07-12T00:03:45.513 に答える
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))
于 2012-07-12T09:31:36.450 に答える
-1

別の簡単な方法:

 summary(df[,1]) #where df is your data frame and you want the 1st column counts ("Expt")

注:最初の列はafactorであり、これは次のすべての列に適用されます。factor

于 2012-07-11T23:52:59.947 に答える