组中没有行

时间:2016-05-19 05:44:41

标签: r

我有两个可变的A和B

a
neat
neat
sweet
sweet

我想将变量a分组并获取每组中的行数。在上述情况下,每组将为2

2 个答案:

答案 0 :(得分:0)

我们可以使用data.table。将'data.frame'转换为'data.table'(setDT(df1)),按'a'分组,我们将(:=)新列('b')分配给行数( .N)。

setDT(df1)[, b := .N, by = a]

或使用ave

中的base R
df1$b <- with(df1, ave(seq_along(a), a, FUN = length)) 

或者如果订购'a'列,

df1$b <- cumsum(!duplicated(df1$a))

如果我们需要汇总输出而不是创建新列

setDT(df1)[, .(b = .N), by = a]
#       a b
#1:  neat 2
#2: sweet 2

或者使用base R,我们可以使用非常快的tabulate

tabulate(factor(df1$a))    

答案 1 :(得分:0)

您可以使用aggregate

aggregate(df, list(df$a), length)

#   Group.1 a
#1    neat  2
#2   sweet  2

或者如@alistaire的评论中所述,您也可以使用table来获取每个唯一字词的频率

table(df$a)

# neat sweet 
#  2     2