11

重複の可能性:
R グループ化関数: sapply 対 lapply 対 apply. vs. tapply vs. by vs. アグリゲート vs.

私はRを使用していますが、私が抱えている問題について助けていただければ幸いです:

df列 ID と列 Emotion を持つデータフレーム ( ) があります。ID の各値は、Emotion の 40 ~ 300 の値に対応します (したがって、セット数ではありません)。Emotion各 j in について、すべての i の平均を計算する必要がありIDます。というわけでデータはこんな感じ

df$ID = (1, 1, 1, 1, 2, 2, 3)
df$Emotion = (2, 4, 6, 4, 1, 1, 8)

したがって、平均のベクトルは次のようになります。(4, 1, 8)

どんな助けでも大歓迎です!

4

2 に答える 2

22

使用できますaggregate

ID = c(1, 1, 1, 1, 2, 2, 3)
Emotion = c(2, 4, 6, 4, 1, 1, 8)
df <- data.frame(ID, Emotion)


aggregate(.~ID, data=df, mean)
   ID Emotion
1  1       4
2  2       1
3  3       8

sapplyも役立つ可能性があります(この他のソリューションはベクトルを提供します)

sapply(split(df$Emotion, df$ID), mean) 
1 2 3 
4 1 8 

plyr パッケージ、data.table パッケージ、とddplyの他の組み合わせ、reshape2 パッケージなど、さまざまな方法があります。さらなる解決策については、この質問を参照してください。splitlapplydcast

于 2012-11-16T22:31:34.737 に答える
10

これはまさにその仕事tapplyがするように設計されたものです。

tapply(df$ID , df$Emotion, mean) 
于 2012-11-16T23:51:40.250 に答える