我在R中有一個數據框,與以下內容類似。實際上,我的真正'DF'數據框比這個更大,但我真的不想混淆任何人,所以我儘可能地儘量簡化。計算data.frame中的數字出現次數。框架
所以這裏是數據框架。
id <-c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3)
a <-c(3,1,3,3,1,3,3,3,3,1,3,2,1,2,1,3,3,2,1,1,1,3,1,3,3,3,2,1,1,3)
b <-c(3,2,1,1,1,1,1,1,1,1,1,2,1,3,2,1,1,1,2,1,3,1,2,2,1,3,3,2,3,2)
c <-c(1,3,2,3,2,1,2,3,3,2,2,3,1,2,3,3,3,1,1,2,3,3,1,2,2,3,2,2,3,2)
d <-c(3,3,3,1,3,2,2,1,2,3,2,2,2,1,3,1,2,2,3,2,3,2,3,2,1,1,1,1,1,2)
e <-c(2,3,1,2,1,2,3,3,1,1,2,1,1,3,3,2,1,1,3,3,2,2,3,3,3,2,3,2,1,3)
df <-data.frame(id,a,b,c,d,e)
df
基本上我想要做的就是拿到號碼的出現爲每列(A,B,C,d,e)和每個ID組(1,2,3)(此後者分組見我的專欄'id')。
所以,對於列「A」和身份證號碼「1」(後者見列「ID」)代碼將是這樣的:
as.numeric(table(df[1:10,2]))
##The results are:
[1] 3 7
只是簡單介紹一下我的結果:在'a'列中(並且僅關於在'id'列中具有數字'1'的那些記錄),我們可以說數字「1」發生3次並且數字「3」發生7次。
再次,只是爲了向您展示另一個例子。對於列「A」和身份證號碼「2」(後者分組再次看到列「ID」):
as.numeric(table(df[11:20,2]))
##After running the codes the results are:
[1] 4 3 3
讓我再解釋一下:在列「A」和關於只有那些觀察其在'id'列中具有數字'2'),我們可以說數字'1'發生4次,數字'2'發生3次,數字'3'發生3次。
所以這就是我想要做的。計算每個自定義子集的數字出現次數(然後將這些值收集到數據幀中)。我知道這不是一個困難的任務,但問題是,我將不得不定期更改輸入「DF」數據幀,因此行和列的總數可能會隨着時間而改變...
什麼我已經做了到目前爲止,我已經按列分隔「東風」數據幀,這樣的:
for (z in (2:ncol(df))) assign(paste("df",z,sep="."),df[,z])
所以df.2將引用的df,一個$,df.3將等於DF $ b,DF。 4將等於DF $ c等,但我現在真的卡住了,我不知道如何前進......
有沒有一個適當的,「自動」的方式來解決這個問題?
+1非常乾淨.. – 2011-03-17 18:31:56