首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对2个数据帧的行进行R: T测试

对2个数据帧的行进行R: T测试
EN

Stack Overflow用户
提问于 2012-09-21 08:31:02
回答 2查看 4.5K关注 0票数 4

我有两个数据帧,我想对行进行独立的两组t测试(例如,t.test(y1, y2),其中y1是dataframe1中的一行,y2是dataframe2中的匹配行)

实现这一目标的最好方法是什么?

编辑:我刚刚找到了格式: dataframe1i,dataframe2i,。这将在循环中工作。这是最好的解决方案吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-21 08:48:35

你概述的方法是合理的,只要确保预先分配存储向量即可。我会仔细检查您是否真的希望比较行而不是列。我使用的大多数数据集都将每行作为观察单位,列表示感兴趣的不同响应/列,这是您的数据-因此,如果您需要这样做,这里有一种方法:

代码语言:javascript
复制
#Fake data
df1 <- data.frame(matrix(runif(100),10))
df2 <- data.frame(matrix(runif(100),10))


#Preallocate results
testresults <- vector("list", nrow(df1))
#For loop
for (j in seq(nrow(df1))){
  testresults[[j]] <- t.test(df1[j,], df2[j,])
}

现在,您有了一个与df1中的行数一样长的列表。然后,我建议使用lapplysapply轻松地从list对象中提取内容。

票数 5
EN

Stack Overflow用户

发布于 2012-09-21 08:52:40

将数据存储为列会更有意义。

您可以通过以下方式转置data.frame

代码语言:javascript
复制
df1_t <- as.data.frame(t(df1))
df2_t <- as.data.frame(t(df2))

然后,可以使用mapply一次循环遍历两个data.frames一列

代码语言:javascript
复制
t.test_results <- mapply(t.test, x= df1_t, y = df2_t, SIMPLIFY = F)

或者您可以使用Map,它是带有SIMPLIFY = Fmapply的简单包装器(这样可以节省击键次数!)

代码语言:javascript
复制
t.test_results <- Map(t.test, x = df1_t, y = df2_t)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12522797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档