Подсчет случаев, если выполняется условие: группировать по столбцу - PullRequest
0 голосов
/ 27 февраля 2019

Я хотел бы получить число и процент случаев, которые удовлетворяют определенному условию, сгруппированные по другому столбцу.

Группы - это города, условие hour >= 6.

Например,

  city hour
    A    7
    A    6
    A    3
    B    2
    C    7

Я хотел бы получить

 city hour>=6
    A 2
    B 1
    C 0

и каждый процент в зависимости от города.

  city         hours >= 6 (%)
     A 0.6666667
     B 1.0000000
     C 0.0000000
City    ---  hour

Я думаю, что 'm почти там

aggregate(hours, list(city), mean)

Я получаю среднее значение часа по городу, но не понимаю, как получить другие результаты.

MG

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

с использованием пакета dplyr

данные:

df1<-data.frame(city=c(rep("A",3), "B","C"), hour = c(7,6,3,2,7))

код:

df1 %>% group_by(city) %>% summarise(hourLHE6 = sum(hour <= 6), hourPCT = sum(hour <= 6)/length(hour))

результат:

## A tibble: 3 x 3
#  city  hourLHE6 hourPCT
#  <fct>    <int>   <dbl>
#1 A            2   0.667
#2 B            1   1    
#3 C            0   0    
0 голосов
/ 27 февраля 2019

Попробуйте это:

x <- structure(list(city = c("A", "A", "A", "B", "C"), hour = c(7, 
6, 3, 2, 7)), row.names = c(NA, -5L), class = "data.frame")

> x
  city hour
1    A    7
2    A    6
3    A    3
4    B    2
5    C    7

> aggregate(x$hour, by = list(city = x$city), function(z) length(z[z<=6]))
  city x
1    A 2
2    B 1
3    C 0

> aggregate(x$hour, by = list(city = x$city), function(z) length(z[z<=6]) / length(z))
  city         x
1    A 0.6666667
2    B 1.0000000
3    C 0.0000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...