2015-05-22 68 views
-2

我有一個變量的數據框,有些出現多次,例如: a,b,b,b,c,c,d,e,f 然後,我想獲得一個輸出(兩列)如下: a 1; b 3; c 2; d 1; e 1; f 1. 獎金問題:如果變量在計數列中出現的次數少於「n」次,我希望變量被命名(例如'other'如果少於2次出現的次數)。計數獨特變量的發生

+3

使用'as.data.frame(table(yourvector))'。如果'a','b','c'是重複的列名稱。用'colnames(yourdata)'替換'yourvector'' – akrun

+5

獎勵提示:請提供一個可重現的例子。 –

+2

@RichardScriven由於可重複性,對我來說,這並不比我見過的其他情況更糟糕,比如粘貼csv的某些行或由R的控制檯打印的結果。 @每個人:獎金問題不是我所知道的(?)的一個騙局,因此缺乏格式的簡單表達似乎有點苛刻。 – Frank

回答

5

製表和摺疊

你舉的例子向量是

vec <- letters[c(1,2,2,2,3,3,4,5,6)] 

爲了得到一個列表,使用

tab <- table(vec) 

要摺疊罕見的項目(比如下面兩項罪名)使用

res <- c(tab[tab>=2],other=sum(tab[tab<2])) 
# b  c other 
# 3  2  4 

兩列

resdf <- data.frame(count=res) 
#  count 
# b   3 
# c   2 
# other  4 

技術上顯示, 「第一列」 這裏是行標籤,與rownames(resdf)訪問。

類似的選項包括:

  • stack(res)兩個實際列
  • data.frame(count=sort(res,decreasing=TRUE))排序

在所有這些,tabc(tab)可以代替res使用。

+1

@akrun感謝您指出這一點;我錯過了它。我已經添加了一些基本的R選項,讓我覺得更簡單。 – Frank