У меня два varaibles А и ВНет строки в группе
a
neat
neat
sweet
sweet
Я хочу, чтобы сгруппировать переменную а и получить не строки в каждой группе. В приведенном выше случае это будет 2 для каждой группы
У меня два varaibles А и ВНет строки в группе
a
neat
neat
sweet
sweet
Я хочу, чтобы сгруппировать переменную а и получить не строки в каждой группе. В приведенном выше случае это будет 2 для каждой группы
Вы можете использовать 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
Мы можем использовать 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))
Или, если 'а' колонка упорядочена,
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))
Параметр ' dplyr': 'df%>% group_by (a)%>% sumize (n = n())' или просто 'df%>% count (a)'. 'table (df $ a)' работает тоже, в зависимости от того, что вы пытаетесь сделать. – alistaire