0

data.frame 内の複数の列の頻度を数えようとしています。

各列で関数を使用し、tableそれらをすべて cbind でバインドし、後で集計関数を使用して、識別子で平均を計算しました。例:

df1
V1       V2     V3
George   Mary   Mary  
George   Mary   Mary
George   Mary   George
Mary     Mary   George
Mary    George  George
Mary   
Frequency<- as.data.frame(cbind(table(df1$V1), table(df1$V2), table(df1$V3)))
row.names V1
George    3
Mary      3
          1
George    1
Mary      4
          1
George    3
Mary      2

(視覚的に) 得られる結果は 2 列のデータ フレームですが、の次元を確認するFrequencyと、2 列目のみが存在することを意味する結果が得られます。

列の名前を変更して集計関数を実行しようとすると、問題が発生します。名前の変更でエラーが発生します。

colnames(Frequency) <- c("Name", "Frequency")
Error in names(Frequency) <- c("Name", "Frequency") : 
  'names' attribute [2] must be the same length as the vector [1]

最終的な目的は、集計コマンドを実行し、名前で平均を取得することです。

Name.Mean<- aggregate(Frequency$Frequency, list(Frequency.Name), mean)

望ましい出力:

Name   Mean
George Value
Mary   Value
4

2 に答える 2

1

使用mtabulate(@ user3169080 の投稿からのデータ)

library(qdapTools)
d1 <- mtabulate(df1)
is.na(d1) <- d1==0 
colMeans(d1, na.rm=TRUE)
# Alice George   Mary 
#  4.0    3.0    2.5 
于 2015-06-16T14:55:38.873 に答える