r语言 - 我如何在58(变量)列上运行t检验来比较2个不同的数据帧



我想在每个数据框架中比较58列,看看它们之间是否存在显著差异(单独或作为一个整体),因为58列中的每一列都包含一个盆地,并且将是整体的总和,但仍然单独代表不同的东西。我不知道该怎么做t。test。我对编程和R真的很陌生

这是一种使用lapply循环对两个数据帧的所有列进行t检验的方法。每个测试返回一个类"htest"的列表,sapply指令提取感兴趣的列表成员。

tests_list <- lapply(seq_along(df1), function(i){
t.test(df1[[i]], df2[[i]])
})
sapply(tests_list, '[[', 'statistic')
sapply(tests_list, '[[', 'p.value')
sapply(tests_list, '[[', 'conf.int')

测试数据
set.seed(2021)
n <- 20
df1 <- matrix(rnorm(n*4), ncol = 4)
df2 <- matrix(rnorm(n*4), ncol = 4)
df1 <- as.data.frame(df1)
df2 <- as.data.frame(df2)

在最简单的情况下,您将遍历每列并执行多个t-检验,如下所示。

# Dataframe 1: Col 1: It has 100 values, mean = 1, SD = 1
df_1_col_1 = rnorm(100, 1, 1)
# Dataframe 2: Col 1: It has 75 values, mean = 2, SD = 1
df_2_col_1 = rnorm(75, 2, 1)
# Null hyposthesis: difference between x and y is = 0
t.test(df_1_col_1, df_2_col_1)
# P-value < 0.05 you reject the null hypothesis.

或者,您可以按行聚合58列,以便为每行获取一个值。例如:以58列值的mean为例。现在你将得到一个值列表(df_1_col_1&dataframe 1dataframe 2df_2_col_1)。如果你不喜欢简单的mean,你可以在你的数据框架上做PCA,并使用两个数据框架的第一个主成分,来做t检验。

最新更新