Как объединить 2 наблюдения экспериментального блока в разные даты в один ряд - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь объединить наблюдения (строки) на основе нескольких дат. В моем исследовании я выбрал новобранцев на каждой стороне модуля в определенные даты. Однако в нескольких случаях мне приходилось возвращаться к определенным сторонам модуля, чтобы завершить свои переписи в другую дату. Что я хочу сделать для этих случаев, так это сложить вместе количество новобранцев и указать дату последнего наблюдения.

Я пытался использовать спред (n2, ключ = дата, значение = рекруты), но это не помогло получить данные из 2 строк в 1.

База данных:

n3 <- structure(list(`Module #` = c(114L, 114L, 114L, 114L, 114L, 114L, 
114L, 114L, 114L, 114L, 114L, 114L, 114L, 114L, 114L, 114L, 114L, 
114L), Side = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("N", "S", "T"
), class = "factor"), TimeStep = c(1L, 4L, 4L, 5L, 6L, 7L, 1L, 
4L, 4L, 5L, 6L, 7L, 1L, 4L, 4L, 5L, 6L, 7L), Date = structure(c(NA, 
17389, 17398, 17482, 17601, NA, 17299, 17389, 17404, NA, 17601, 
17682, 17299, 17389, 17404, NA, 17601, NA), class = "Date"), 
    Site = structure(c(NA, 2L, 2L, 2L, 2L, NA, 2L, 2L, 2L, NA, 
    2L, 2L, 2L, 2L, 2L, NA, 2L, NA), .Label = c("HAN", "WAI"), class = "factor"), 
    Treatment = c(NA, "CLO", "CLO", "CLO", "CLO", NA, "CLO", 
    "CLO", "CLO", NA, "CLO", "CLO", "CLO", "CLO", "CLO", NA, 
    "CLO", NA), recruits = c(0, 5, 1, 2, 1, 0, 1, 4, 1, 0, 2, 
    4, 2, 1, 1, 0, 1, 0), Site_long = structure(c(2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L
    ), .Label = c("Hanauma Bay", "Waikiki"), class = "factor"), 
    Shelter = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("High", "Low"
    ), class = "factor")), row.names = c(NA, -18L), class = c("tbl_df", 
"tbl", "data.frame"))

print(n3)

Как упомянуто выше, я хочу объединить наблюдения для сторон модуля, где наблюдения происходили в две отдельные даты, путем суммирования числа призывников для обоих наблюдений и назначения даты для объединенной строки данных датой последнего наблюдения. Спасибо за ваш вклад!

1 Ответ

0 голосов
/ 20 июня 2019

Как то так?

n3 %>%
  group_by(`Module #`, Side, Site, Treatment) %>%
  summarize(Date = max(Date),
            recruits = sum(recruits)) %>%
  ungroup()

# A tibble: 6 x 6
  `Module #` Side  Site  Treatment Date       recruits
       <int> <fct> <fct> <chr>     <date>        <dbl>
1        114 N     WAI   CLO       2018-03-11        9
2        114 N     NA    NA        NA                0
3        114 S     WAI   CLO       2018-05-31       12
4        114 S     NA    NA        NA                0
5        114 T     WAI   CLO       2018-03-11        5
6        114 T     NA    NA        NA                0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...