Как мне собрать сумму зараженных людей в каждый конкретный момент? - PullRequest
0 голосов
/ 01 мая 2020

Я хочу, чтобы каждый раз имелся фрейм данных и сумму инфицированных лиц.

Сначала я создаю векторы, которые будут находиться во фрейме данных.

 status<-(c("h","h","h","h","i","h","h","h","i","i","h","h","h","i","i","h","h","i","i","i"))
 time<-c(0,0,0,0,0,2,2,2,2,2,5,5,5,5,5,8,8,8,8,8)

Затем я создать фрейм данных

 test<-data.frame(time,status)

Что мне делать дальше? Я открыт для пакетов и альтернативных методов.

Большое спасибо.

Ответы [ 4 ]

1 голос
/ 01 мая 2020

Опция с data.table

library(data.table)
setDT(df)[, .(n = .N), .(time, status)]

Или с count

library(dplyr)
df %>%
   count(time, status)

Или с base R с table

table(df[c('time', 'status')])
1 голос
/ 01 мая 2020

Я не уверен, какой результат является ожидаемым результатом. Ниже приведены два варианта с aggregate в базе R:

  • список всех состояний
> aggregate(.~time,test,list)
  time        status
1    0 h, h, h, h, i
2    2 h, h, h, i, i
3    5 h, h, h, i, i
4    8 h, h, i, i, i
  • суммирование статуса в виде числа i и h
> aggregate(.~time,test,table)
  time status.h status.i
1    0        4        1
2    2        3        2
3    5        3        2
4    8        2        3

0 голосов
/ 01 мая 2020

Полагаю, вам нужно количество людей со статусом h или i по времени:

library(dplyr)

df %>% group_by(time,status) %>% summarise(n = n())
# A tibble: 8 x 3
# Groups:   time [4]
   time status     n
  <dbl> <chr>  <int>
1     0 h          4
2     0 i          1
3     2 h          3
4     2 i          2
5     5 h          3
6     5 i          2
7     8 h          2
8     8 i          3

Если вас интересуют только зараженные люди

df %>% group_by(time,status) %>% summarise(n = n()) %>% filter(status == "i")
0 голосов
/ 01 мая 2020

Не совсем уверен, что представляет переменная времени, но вот попытка, если я правильно интерпретирую ваши переменные.

library(tidyverse)
testB <- test %>% 
  group_by(status) %>% 
  summarise(sum = sum(time))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...