我有两个可变的A和B
a
neat
neat
sweet
sweet
我想将变量a分组并获取每组中的行数。在上述情况下,每组将为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