【发布时间】:2019-08-29 12:21:52
【问题描述】:
所以,假设我有一个 1000 行、6 列的数据框,列是 a1、a2、b1、b2、c1、c2。我想使用 a's、b's 和 c's 运行一些 t 检验,并获得一个输出 df,其中 3 列用于 a-b-c 的 t 值,另外 3 列用于这些值的显着性信息,总共 6 列。我遇到的问题是行,我想循环 20 个块,将输出呈现为 (1000/20=)50 行、6 列 df。
我已经尝试为我的初始 df 创建一个索引列,它在前 20 行重复 1,在接下来的 20 行重复 2,依此类推。
convert_n <- function(df) {
df <- df %T>% {.$n_for_t_tests = rep(c(1:(nrow(df)/20)), each = 20)}
}
df <- convert_n(df)
但是,我似乎找不到正确利用此列中的项目作为“for”或任何类型循环的索引的方法。
您可以在下面看到创建 1 行 6 列 df 的相关代码;我需要修改 [0:20] 部分,创建一个循环,为 20 个组执行此操作并绑定它们。
t_test_a <- t.test(df$a1[0:20], dfff$a2[0:20], paired = T, conf.level
= 0.95)
t_test_b <- t.test(df$b1[0:20], dfff$b2[0:20], paired = T, conf.level
= 0.95)
t_test_c <- t.test(df$c1[0:20], dfff$c2[0:20], paired = T, conf.level
= 0.95)
t_tests_df <- data.frame(t_a = t_test_a$statistic[["t"]],
t_b = t_test_b$statistic[["t"]],
t_c = t_test_c$statistic[["t"]])
t_tests_df <- t_tests_df %T>% {.$dif_significance_a = ifelse(.$t_a >
2, "YES", "NO")} %T>%
{.$dif_significance_b = ifelse(.$t_b >
2, "YES", "NO")} %T>%
{.$dif_significance_c = ifelse(.$t_c >
2, "YES", "NO")} %>%
dplyr::select(t_a, dif_significance_a,
t_b, dif_significance_b,
t_c, dif_significance_c)
提前感谢您的帮助。
【问题讨论】:
-
索引从1开始,所以
df$a1[1:20]等等 -
其实这也行。