我目前正在研究一個大型數據集,其中包含大約9000個屬於不同組的觀察值。現在,我想使用一種名爲拆分樣本設計的方法來分析這些數據。讓我詳細解釋我想做什麼。我的數據結構如下:拆分樣本設計
GroupID Performance Commitment Affect Size
1234 5 4 2 2
1234 6 8 9 2
2235 4 3 2 5
2235 4 3 2 5
2235 2 1 7 5
2235 2 1 7 5
2235 2 6 10 5
3678 3 5 5 4
3678 7 3 5 4
3678 5 2 6 4
3678 1 4 6 4
現在,我想通過以下方式聚集這樣的數據:對於每一個組,我想用該組的前半部和後的平均性能得分平均承諾和影響組的後半部分創建一個新的觀察結果(對於不平均組大小,我想在組內減少一個隨機觀察 - 例如組內最後一次觀察 - 創建一個平均組大小)。不過,我想分兩步做。首先,數據應如下所示:
GroupID Performance Commitment Affect Size
1234 5 8 9 2
2235 4 1 7 5
2235 4 1 7 5
3678 3 2 6 4
3678 7 4 6 4
在下一步中,我想彙總數據。新的數據集將每組有一個觀察,像這樣:
GroupID Performance Commitment Affect Size
1234 5 8 9 2
2235 4 1 7 5
3678 5 3 6 4
不過請注意,該組2235的最後一個觀察被放棄了,因爲該組的大小是一個奇數。
是否有任何包會以這種方式拆分和聚合我的數據?如果不是,你會如何繼續編碼?我會非常感謝任何建議,因爲我目前還不知道如何優雅地處理這個問題,除了編寫一堆for
循環。
這裏是上面的例子的代碼:
groupid <- c(1234, 1234, 2235, 2235, 2235, 2235, 2235, 3678, 3678, 3678, 3678)
performance <- c(5, 6, 4, 4, 2, 2, 2, 3, 7, 5, 1)
commitment <- c(4, 8, 3, 3, 1, 1, 6, 5, 3, 2, 4)
affect <- c(2, 9, 2, 2, 7, 7, 10, 5, 5, 6, 6)
size <- c(2, 2, 5, 5, 5, 5, 5, 4, 4, 4, 4)
mydata <- data.frame(groupid, performance, commitment, affect, size)
非常感謝!!
您是否嘗試過使用任何軟件? ''aggregate' – dayne
我會開始在Matlab中使用很多'for'循環編寫代碼,但是,我認爲肯定有一個更簡單的方法來在R中完成它。我還沒有使用聚合函數,但會看起來進去。謝謝! – rp1
我會先分割數據,然後在兩個子集上使用'aggregate',然後將它們放回到一起。 – dayne