2012-06-11 165 views
1

我還有一個問題。感謝大家的幫助和耐心與R新手!如何統計列中未知字符串的發生?

如何計算字符串出現在列中的次數?例如:

MYdata <- data.frame(fruits = c("apples", "pears", "unknown_f", "unknown_f", "unknown_f"), 
        veggies = c("beans", "carrots", "carrots", "unknown_v", "unknown_v"), 
        sales = rnorm(5, 10000, 2500)) 

的問題是,我的真實數據集包含幾千行和未知的水果和蔬菜不明幾百。我玩過「桌面()」和「關卡」,但沒有獲得太多成功。我想它比這更復雜。偉大的是有一個輸出表列出每個獨特的水果/蔬菜的名稱和它的列中出現了多少次。任何正確的方向提示將不勝感激。

感謝,

馬庫斯

+2

'table(MYdata $ fruits)'以何種方式不滿意? –

+0

哇!我真的要爲此道歉!我花了半天的時間...嘗試了不同的table()迭代...但是 - 我保證 - 沒有任何有用的東西。我想我錯過了樹林。感謝大家提供有用的答案和意見! Marcus – Dalmuti71

回答

1

也許像

summary(MYdata$fruits) 
+0

謝謝!作爲一個新手,我並沒有真正意識到summary()命令。 – Dalmuti71

10

如果我明白你的問題,功能table()應該只是罰款。這裏是如何:

table(MYdata$fruits) 

    apples  pears unknown_f 
     1   1   3 
table(MYdata$veggies) 

    beans carrots unknown_v 
     1   2   2 

或者使用tablelapply

lapply(MYdata[1:2], table) 
$fruits 

    apples  pears unknown_f 
     1   1   3 

$veggies 

    beans carrots unknown_v 
     1   2   2 
+0

謝謝!我很抱歉這很容易。看到我上面的評論。 – Dalmuti71

3

下面給你,你可能會發現更容易使用,也可以根據自己的意圖更好地計數的數據幀:

tabs=lapply(MYdata[-3], table) 
out=data.frame(item=names(unlist(tabs)),count=unlist(tabs)[], 
       stringsAsFactors=FALSE) 
rownames(out)=c() 

print(out) 

       item count 
1  fruits.apples  1 
2  fruits.pears  1 
3 fruits.unknown_f  3 
4  veggies.beans  1 
5 veggies.carrots  2 
6 veggies.unknown_v  2 
+0

謝謝!這確實非常有用! – Dalmuti71

+0

此解決方案是特別好的,因爲輸出是一個數據幀,而不是一個表,其可以是疼痛稍後操縱。 –

相關問題