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))

问题是我的真实数据集包含数千行和数百个未知水果和未知蔬菜。我玩过“table()”和“levels”,但没有取得多大成功。我想它比这更复杂。最好有一个输出表,列出每个独特水果/蔬菜的名称以及它在其列中出现的次数。任何正确方向的提示将不胜感激。

谢谢,

马库斯

4

3 回答 3

10

如果我理解您的问题,该功能table()应该可以正常工作。方法如下:

table(MYdata$fruits)

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

    beans   carrots unknown_v 
        1         2         2 

table在里面使用lapply

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

   apples     pears unknown_f 
        1         1         3 

$veggies

    beans   carrots unknown_v 
        1         2         2 
于 2012-06-11T06:24:16.840 回答
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
于 2012-06-11T16:48:37.247 回答
1

也许像

summary(MYdata$fruits)
于 2012-06-11T06:19:03.973 回答