【发布时间】:2020-10-31 02:09:35
【问题描述】:
我有一些看起来像这样的数据:
group date Mal Fem
<chr> <date> <dbl> <dbl>
1 grp1 2020-07-01 7 5
2 grp1 2020-07-02 17 17
3 grp1 2020-07-03 16 15
4 grp1 2020-07-04 6 9
5 grp1 2020-07-05 6 3
其中有 3 个组 grp1、grp2 和 grp3。我想看看它们的分布是如何随时间变化的,我认为绘制一个“分组滚动 t 检验”会很有趣,例如滞后期为 7 天。
我执行以下操作:
# Process and convert data to a zoo object
df_ts <- df %>%
pivot_wider(names_from = group, values_from = c(Mal, Fem)) %>%
select(date, contains("grp1")) %>%
timetk::tk_zoo()
# Define a t test function
ttestFun <- function(dat) {
myTtest = t.test(x = dat[, 1], y = dat[, 2])
return(myTtest)
}
# See if the t test functionw works
ttestFun(df_ts)
# Apply the function to the rolling data
rollapplyr(df_ts, 7, FUN = ttestFun, fill = NA, by.column = FALSE)
我正在尝试做两件事。
- 获取适用于滚动窗口的代码,因为此时它在
rollapplyr函数上中断并出现以下错误:
动物园中的错误(rval,索引(x)[i]):“x”:尝试定义无效 动物园对象
- 获取代码,不仅将 t 检验应用于(
grp1和grp2),还应用于其他组合(grp1和grp3)和(grp2和grp3)
数据:
df <- structure(list(group = c("grp1", "grp1", "grp1", "grp1", "grp1",
"grp1", "grp1", "grp1", "grp1", "grp1", "grp1", "grp1", "grp1",
"grp1", "grp1", "grp2", "grp2", "grp2", "grp2", "grp2", "grp2",
"grp2", "grp2", "grp2", "grp2", "grp2", "grp2", "grp2", "grp2",
"grp2", "grp3", "grp3", "grp3", "grp3", "grp3", "grp3", "grp3",
"grp3", "grp3", "grp3", "grp3", "grp3", "grp3", "grp3", "grp3"
), date = structure(c(18444, 18445, 18446, 18447, 18448, 18449,
18450, 18451, 18452, 18453, 18454, 18455, 18456, 18457, 18458,
18444, 18445, 18446, 18447, 18448, 18449, 18450, 18451, 18452,
18453, 18454, 18455, 18456, 18457, 18458, 18444, 18445, 18446,
18447, 18448, 18449, 18450, 18451, 18452, 18453, 18454, 18455,
18456, 18457, 18458), class = "Date"), Mal = c(7, 17, 16, 6,
6, 8, 20, 4, 20, 36, 13, 8, 19, 14, 19, 42, 31, 35, 29, 3, 23,
39, 30, 25, 46, 30, 11, 47, 59, 55, 4, 3, 5, 2, 1, 2, 4, 3, 1,
1, 3, 1, 1, 2, 1), Fem = c(5, 17, 15, 9, 3, 10, 14, 12, 19, 41,
6, 9, 21, 14, 18, 61, 36, 49, 46, 13, 24, 37, 39, 38, 56, 31,
21, 53, 61, 65, 6, 2, 2, 2, 0, 1, 0, 5, 0, 2, 0, 1, 1, 5, 1)), row.names = c(NA,
-45L), groups = structure(list(group = c("grp1", "grp2", "grp3"
), .rows = structure(list(1:15, 16:30, 31:45), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, 3L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
【问题讨论】:
标签: r