2015-10-10 54 views
1

我有一個數據幀(最初來自CSV文件),列NAME和YEAR。我已提取的樣品從第一十個條目的這個數據幀像這樣:提取的數據幀選擇仍包含來自全數據幀集的條目

sample<-df(1:10,) 

我想知道在名稱列中的值的頻率,所以我輸入以下內容:

as.data.frame(table(sample$NAME)) 

這會正確計數樣本中的頻率,但也會包含'Var1'列中所有原始數據框的名稱(全部爲Freq爲0)。

如果我還使用唯一的(樣本$ NAME),也會發生同樣的情況:它也會從樣本中列出名稱以及原始數據框中的所有名稱。

我在做什麼錯?

回答

0

這可能是'NAME'factor列中未使用level的情況。我們可以使用droplevels或再次撥打factor來刪除那些未使用的級別。

as.data.frame(table(droplevels(sample$NAME))) 

或者

as.data.frame(table(factor(sample$NAME))) 
+1

很多感謝這一點。我在這個問題上進一步搜索,發現這個更早的SO q&a進入額外的細節:http://stackoverflow.com/questions/1195826/drop-factor-levels-in-a-subsetted-data-frame 具體來說,樣本<-dopleople(樣品) –

+0

我試圖立即,但它讓我等了幾分鐘。再次感謝。 –

+0

@JDS謝謝,也考慮在將來發布時顯示一些示例數據集(以便於理解)。 – akrun