我正在尝试组合基于多个日期的观察值(行)。在我的研究中,我在每个模块的特定日期对新兵进行了抽样。然而,在少数情况下,我必须返回到特定的模块侧来在不同的日期完成我的调查。对于这些实例,我想要做的是将新兵的数量相加,并将日期作为最后一次观察的日期。
我尝试使用spread(n2,key = Date,value = recruits),但这对将数据从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)如上所述,我希望合并模块方面的观察,其中观察发生在两个单独的日期,方法是将两个观察的招募人数相加,并将组合数据行的日期设置为后一个观察的日期。感谢您的投入!
发布于 2019-06-20 14:04:39
像这样的东西?
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 0https://stackoverflow.com/questions/56678947
复制相似问题