Получить количество непрерывных вхождений строки в столбце данных на основе другого столбца
Мне нужно выяснить, сколько раз одно значение встречается за другим в столбце определенного фрейма данных.
Основная логика заключается в том, чтобы получить отсутствие вхождений определенной строки на основе другого столбца.
Например:
df<- data.frame(fruits = c("apples", "apples", "orange", "pears", "apples", "pears", "pears", "papaya", "papaya"),
veggies = c("beans", "carrots", "carrots", "carrots", "brinjal","carrots", "brinjal", "brinjal", "beans"),
branches=c( "Area1", "Area1", "Area1", "Area2","Area2","Area2", "Area2", "Area3", "Area3" ))
Это мой фрейм данных. мне нужно знать количество фруктов или овощей на основе столбца ветви
Когда я использую table(df$fruits)
выход:
apples-3 orange-1 papaya-2 pears-3
Выходные данные обычно показывают общее количество яблок и остальных фруктов для всех отраслей. Мне нужно получить счет точно для каждой ветви.
Мой требуемый вывод должен основываться на столбце df$Branches
for Area1
apples-2 orange-1,
for Area2
pears-3 apples-1
for Area3
papaya-3
3 ответа
Возможно просто использовать ftable
:
> ftable(fruits ~ branches, data = df)
fruits apples orange papaya pears
branches
Area1 2 1 0 0
Area2 1 0 0 3
Area3 0 0 2 0
> ftable(veggies ~ branches, data = df)
veggies beans brinjal carrots
branches
Area1 1 0 2
Area2 0 2 2
Area3 1 1 0
Попробуй это:
library(data.table)
setDT(df)[,list(count=.N),list(branches, fruits)]
# branches fruits count
#1: Area1 apples 2
#2: Area1 orange 1
#3: Area2 pears 3
#4: Area2 apples 1
#5: Area3 papaya 2
Я не знаю ожидаемого результата, но вы можете получить количество, используя пакет dplyr:
Например:
library(dplyr)
df %>% count(fruits, branches)
# OR
count(df, fruits, branches)
Выход:
Source: local data frame [5 x 3]
Groups: fruits
fruits branches n
1 apples Area1 2
2 apples Area2 1
3 orange Area1 1
4 papaya Area3 2
5 pears Area2 3