如何在变异后将 t.test() 应用于多对列

2023-12-26

这个问题与此相关跨多列进行 T 检验或整理数据 https://stackoverflow.com/questions/69951627/t-tests-across-multiple-columns-or-tidy-the-data#69951627.

data:

df <- structure(list(Subject = 1:3, PreScoreTestA = c(30L, 15L, 20L
), PostScoreTestA = c(40L, 12L, 22L), PreScoreTestB = c(6L, 9L, 
11L), PostScoreTestB = c(8L, 13L, 12L), PreScoreTestC = c(12L, 
7L, 9L), PostScoreTestC = c(10L, 7L, 10L)), class = "data.frame", row.names = c(NA, 
-3L))

> df
  Subject PreScoreTestA PostScoreTestA PreScoreTestB PostScoreTestB PreScoreTestC PostScoreTestC
1       1            30             40             6              8            12             10
2       2            15             12             9             13             7              7
3       3            20             22            11             12             9             10

这里OP询问是否可以申请t.test到成对的列宽格式数据框。已经提供了使用长格式的解决方案。

不过,我尝试应用以下代码作为以宽格式执行 t.test 的答案。

我的代码使用+作为函数(效果很好):

library(dplyr)
library(stringr)
df %>%
  mutate(across(starts_with('PreScore'), ~ . +
                  get(str_replace(cur_column(), "^PreScore", "PostScore")), .names = "{.col}_TTest")) %>%
  rename_at(vars(ends_with('TTest')), ~ str_remove(., "PreScore"))

# gives:
  Subject PreScoreTestA PostScoreTestA PreScoreTestB PostScoreTestB PreScoreTestC PostScoreTestC
1       1            30             40             6              8            12             10
2       2            15             12             9             13             7              7
3       3            20             22            11             12             9             10
  TestA_TTest TestB_TTest TestC_TTest
1          70          14          22
2          27          22          14
3          42          23          19

现在我想改变功能+ by t.test(这不起作用,我尝试了很多变体):

library(dplyr)
library(stringr)
df %>%
  mutate(across(starts_with('PreScore'), ~ . t.test
                  get(str_replace(cur_column(), "^PreScore", "PostScore")), .names = "{.col}_TTest")) %>%
  rename_at(vars(ends_with('TTest')), ~ str_remove(., "PreScore"))

我想知道:

是否可以申请t.test函数到预定义列对的集合across就像有可能- + / etc...

我已经通过的更多资源:

使用 dplyr 在 R 中循环获取 t.test 结果 https://stackoverflow.com/questions/67596633/looping-to-get-t-test-result-in-r-using-dplyr

dplyr 使用 t.test 总结多列 https://stackoverflow.com/questions/26244321/dplyr-summarise-multiple-columns-using-t-test

对 data.frame 的每对连续列应用 t.test https://stackoverflow.com/questions/40174244/apply-t-test-on-every-consecutive-pair-of-columns-of-a-data-frame

R:使用 t.test 函数对多列进行 t 测试 https://stackoverflow.com/questions/48907955/r-t-test-over-multiple-columns-using-t-test-function


The t.test输出是一个list,所以我们可能需要包装一个list容器化mutate

library(dplyr)
library(stringr)
out <- df %>%
  mutate(across(starts_with('PreScore'), 
    ~list(t.test(.,
         get(str_replace(cur_column(), "^PreScore", "PostScore")))), 
        .names = "{.col}_TTest")) %>%
     rename_at(vars(ends_with('TTest')), ~ str_remove(., "PreScore"))

-检查str

> str(out)
'data.frame':   3 obs. of  10 variables:
 $ Subject       : int  1 2 3
 $ PreScoreTestA : int  30 15 20
 $ PostScoreTestA: int  40 12 22
 $ PreScoreTestB : int  6 9 11
 $ PostScoreTestB: int  8 13 12
 $ PreScoreTestC : int  12 7 9
 $ PostScoreTestC: int  10 7 10
 $ TestA_TTest   :List of 3
  ..$ :List of 10
  .. ..$ statistic  : Named num -0.322
  .. .. ..- attr(*, "names")= chr "t"
  .. ..$ parameter  : Named num 3.07
  .. .. ..- attr(*, "names")= chr "df"
  .. ..$ p.value    : num 0.768
  .. ..$ conf.int   : num  -32.2 26.2
  .. .. ..- attr(*, "conf.level")= num 0.95
  .. ..$ estimate   : Named num  21.7 24.7
  .. .. ..- attr(*, "names")= chr [1:2] "mean of x" "mean of y"
  .. ..$ null.value : Named num 0
  .. .. ..- attr(*, "names")= chr "difference in means"
  .. ..$ stderr     : num 9.3
  .. ..$ alternative: chr "two.sided"
  .. ..$ method     : chr "Welch Two Sample t-test"
  .. ..$ data.name  : chr "PreScoreTestA and get(str_replace(cur_column(), \"^PreScore\", \"PostScore\"))"
  .. ..- attr(*, "class")= chr "htest"
  ..$ :List of 10
...

如果我们只需要提取一个特定的list元素,即p.value

df %>%
   mutate(across(starts_with('PreScore'),
      ~  t.test(.,
         get(str_replace(cur_column(), "^PreScore", "PostScore")))$p.value, 
     .names = "{.col}_TTest"))
  Subject PreScoreTestA PostScoreTestA PreScoreTestB PostScoreTestB PreScoreTestC PostScoreTestC PreScoreTestA_TTest
1       1            30             40             6              8            12             10            0.767827
2       2            15             12             9             13             7              7            0.767827
3       3            20             22            11             12             9             10            0.767827
  PreScoreTestB_TTest PreScoreTestC_TTest
1            0.330604           0.8604162
2            0.330604           0.8604162
3            0.330604           0.8604162

请注意,通过使用mutate我们为所有行存储相同的信息。相反,我们可以使用summarise

df %>%
   summarise(across(starts_with('PreScore'), ~  t.test(.,
         get(str_replace(cur_column(), "^PreScore", "PostScore")))$p.value, 
      .names = "{.col}_TTest"))
PreScoreTestA_TTest PreScoreTestB_TTest PreScoreTestC_TTest
1            0.767827            0.330604           0.8604162
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在变异后将 t.test() 应用于多对列 的相关文章

  • 循环遍历列并将字符串长度添加为新列

    我有一个包含多列的数据框 并且希望为每个列输出一个单独的列 其中包含每行的长度 我试图迭代列名称 并为每列输出一个附加有 length 的相应列 例如 col1 col2 将转到 col1 列2 col1 长度 列2 长度 我正在使用的代码
  • R、GeoJSON 和 Leaflet

    我最近从 R Bloggers com 的帖子中了解了 leafletjs com 我想要实现的一个此类教程是使用传单创建交互式分区统计图 http leafletjs com examples choropleth html http l
  • 不同大小组的高效递归随机抽样

    这个问题是我之前关于递归随机抽样问题的后续问题高效的递归随机采样 https stackoverflow com questions 69824065 efficient recursive random sampling 当组大小相同或每
  • ggplot2 的组合图(不在单个图中),使用 par() 或 layout() 函数? [复制]

    这个问题在这里已经有答案了 我一直在考虑使用 par 或 layout 函数来组合 ggplots 可以使用这些功能吗 假设我想绘制 ggplot 散点图和 ggplot 直方图 我想将这两个地块合并起来 而不是在一个地块中 是否适用 我在
  • 在 R/ggplot2 中将字符串转换为函数参数的最佳方法? [复制]

    这个问题在这里已经有答案了 我正在开发一个闪亮的应用程序 用户可以选择可以使用 ggplot2 绘制哪些变量 但是我完全不确定将字符串 即要绘制的变量的名称 转换为合适的函数参数的最佳方法 考虑以下非常人为的 有效的示例 df lt dat
  • 删除 R 中的胡须和异常值

    我有连续的数据 我想用它来绘制R s plotly with a box or violin没有异常值和胡须的绘图 set seed 1 df lt data frame group c rep g1 500 rep g2 700 rep
  • 是否可以使用像“tz=NULL”这样的东西?...“as.POSIXct”默认为依赖于语言环境的时区(与“as.Date”不同),这会导致问题

    我知道这是一个长期存在 根深蒂固的问题 但这是我经常遇到的问题 而且我看到初学者R经常与此斗争 我希望有一个令人满意的解决方案 到目前为止 我的谷歌和 SO 搜索都是空的 但如果在其他地方重复 请指出正确的方向 TL DR 有没有办法使用类
  • 有没有办法将字母扩展到超过 26 个字符,例如 AA、AB、AC...?

    我大部分时间都使用字母来表示我的因素 但今天我尝试超过 26 个字符 LETTERS 1 32 期待有自动递归因式分解 AA AB AC 但很失望 这只是字母的限制还是有办法使用其他函数来获取我正在寻找的内容 702够吗 LETTERS70
  • 如何规划庭院灯最有效的路线

    我正在尝试挂一些庭院灯 基于另一个问题 https cs stackexchange com questions 80134 christmas light route efficiency我问 我意识到我需要一种算法来解决路由检查问题 h
  • 使用梯度下降(最速下降)估计线性回归

    示例数据 X lt matrix c rep 1 97 runif 97 nrow 97 ncol 2 y lt matrix runif 97 nrow 97 ncol 1 我已经成功创建了成本函数 COST lt function th
  • 添加不同的标签以在 ggplot R 中的堆积条形图中显示总计?

    我的问题有点类似 如何添加文本标签以显示ggplot中堆叠比例条的每个条中的总数n https stackoverflow com questions 65201095 how to add text label to show total
  • 没有垂直线的直方图

    当我创建直方图时 它看起来很像这样 set seed 1 x lt 1 100 y lt x rnorm 50 y round y hist y Is there a way to make a histogram look a bit l
  • Sweave 缓存包

    我正在尝试编写一份报告 我的问题是每次我编译 R 时都会加载我在报告中使用的包 如 ggplot2 MASS cubature 这是非常耗时的 有没有办法查包裹 I found 缓存编织但它不起作用 这是我在 sweave 文件中添加的块
  • 在 R 中使用科学记数法和 xtable

    我将 data frame 传递给 xtable dat table lt xtable dat 1 20 digits 10 我宁愿使用科学记数法 而不是像那样显示数字 我该怎么做呢 看过了 但我发现的只是R 格式化xtable中的数字
  • 在 R 绘图上使用鼠标书写?

    我使用创建了散点图plot R 中的函数 有没有可能在这个图上画图 我想添加一条直线并获取它的参数 但在我看来abline 可能会很不方便 我想画很多条线 然后选择一条最合适的 我怎样才能完成这个任务 看看 RStudio 和这个例子 li
  • 是否可以在 R 中创建自定义 pch 形状?

    R 中的许多绘图函数都使用图形参数pch指定数据点的形状 根据R 文档 https www rdocumentation org packages graphics versions 3 6 2 topics points 有 26 个矢量
  • 整理包中的字段说明

    我很抱歉 因为我知道这个答案可能出现在编写 R 包的手册中 但在我阅读和查看其他包的整理字段时 我无法 100 弄清楚该字段的用途 用简单的语言 我的是英语 来看 包的描述文件中的整理字段有什么作用 人们想在那里放什么 我认为这来自于某个时
  • ggplot2:图例中的斜体

    我正在尝试编辑图例中的标签 以便第一个标签 WT 为纯文本 而后续 7 个标签为斜体 我一直在使用element text face c plain rep italic 7 但这导致没有任何标签被转换为斜体 我有点困惑为什么它不起作用 因
  • 如何将变量传递给 ddply 中的自定义函数?

    考虑以下数据 d data frame experiment as factor c foo foo foo bar bar si runif 5 ti runif 5 我想进行相关性测试si and ti 对于每个experiment因素
  • 如何对plot_ly()图表进行分面?

    Using ggplot2 and plotly制作交互式散点图facet wrap library ggplot2 library plotly g lt iris gt ggplot aes x Sepal Length y Sepal

随机推荐

  • ReactJS 清除父组件的输入

    我正在教自己使用一个超级简单的应用程序做出反应 该应用程序要求用户输入用户界面中显示的单词 如果用户输入正确 应用程序会显示另一个单词 依此类推 我已经让它几乎可以工作了 除了一件事 正确输入一个单词后 我需要清除输入元素 我在这里看到了几
  • 谜题:找出数组中重复的元素

    数组的大小为n 除了两个元素之外 数组中的所有元素在 0 n 1 范围内都是不同的 以恒定的时间复杂度 无需使用额外的临时数组即可找出重复的元素 我尝试过像这样使用 o n a 1 0 0 2 3 b 1 1 1 1 1 i 0 int r
  • 删除 AngularJS 中的查询字符串

    例如 从 URL 读取并处理查询字符串值后 http myurl com foo baa 我可以将网址更改为 http myurl com foo by using location search myQueryStringParamete
  • Powershell 使用嵌套引号调用 msbuild

    使用 Powershell 和 Psake 为 Visual Studio 解决方案创建包和部署 尝试使用 msbuild 部署数据库项目 使用 msdos Visual Studio 命令行可以正常工作 msbuild target De
  • UI-Router:我可以始终使用相同的控制器吗?

    我正在使用 UI Router 在我的应用程序中添加一些 菜 单 stateProvider state list url Focales templateUrl demo focals html controller FocalCtrl
  • python 的 sum() 和非整数值

    有没有一种简单快捷的方法将 sum 与非整数值一起使用 所以我可以这样使用它 class Foo object def init self bar self bar bar mylist Foo 3 Foo 34 Foo 63 200 re
  • 警告:左移计数 >= 类型宽度

    我对处理位非常陌生 并且在编译时遇到以下警告 7 warning left shift count gt width of type 我的7号线是这样的 unsigned long int x 1 lt lt 32 如果大小是有意义的lon
  • 使用 IEnumerable 和 IQueryable 作为 ObjectSet 类型时的差异

    据我了解 当我使用 LINQ 扩展方法 带有 lambda 表达式语法 时IQueryable那是在事实实例中ObjectSet它们被转换为 LINQ to SQL 查询 我的意思是这个命令 IQueryable
  • 我们应该使用 Nexus 还是 Artifactory 来构建 Maven 存储库? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们使用 Maven 进行大型构建过程 gt 100 个模块 我们一直将外部依赖项存储在源代码管理中 并使用它来更新本地存储库 然而 我们已经准
  • 如何为初学者设置 SSH 配置文件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 首先 我对 SSH 相当陌生 From 这个问题 https stackoverflow com questions 56285972 c
  • 坏元素的映射

    我正在实施k means我想创建新的质心 但映射遗漏了一个元素 然而 当K值较小 例如 15 效果会很好 基于此code http www cs berkeley edu rxin ampcamp ecnu machine learning
  • 返回 n 个布尔值的所有组合的函数?

    我正在尝试实现一个函数 该函数接受数字 n 并返回布尔值列表的列表 其中包含 n 布尔值的所有可能组合 例如的输出 make bools 3 应该看起来像 false false false false false true false t
  • 生成更新脚本 MySQl 表

    我的 MySql 表有 250 个字段 我需要进行更新 手动编写整个更新可能需要几个小时 In SQL服务器 我可以选择 生成更新脚本 我正在寻找类似的选项 我尝试了 Phpmyadmin 和 Navicat 但没有找到这样的选项 Use
  • 实体框架自定义 SQL 查询返回泛型类型

    我正在尝试制作一个通用报告系统 以便我可以动态地将报告添加到我的程序中 而不是每次必须添加报告时都发布新版本的程序 目前 我已经部分工作了 我的自定义报告 SQL 与报告名称一起存储在表中 报表名称用于用户单击的按钮 当他们单击按钮时 我希
  • 找不到aspectj-maven-plugin的依赖项

    我在使用aspectj maven plugin 时遇到CTW 方面的问题 我收到以下错误 执行条目突出显示 Multiple annotations found at this line Execution default of goal
  • 如何将UIScrollview与UIPagecontrol结合起来显示不同的视图?

    我已经搜索并搜索了这方面的教程 但没有一个是我正在寻找的 我尝试过苹果的示例 但它只是颜色 我不知道如何使其成为视图 我所寻找的只是一个可以在显示页面控件的同时进行分页的屏幕 每次滚动视图页面时 我希望它显示带有按钮的完全不同的视图 很像
  • anaconda python 导入 theano 时出错

    我对 python 很陌生 当然我对 Theano 也很陌生 我试图在 Windows 下与 anaconda python 一起使用它 我已经安装了所有强制要求 除了 CUDA 因为在这台笔记本电脑上我没有 NVIDIA GPU 我安装了
  • NSString 常量可以弱链接吗?

    NSString 常量可以弱链接吗 AVCaptureSessionPresetiFrame960x540在 iOS 5 之前没有定义 我避免实际引用它 它在 gdb 中加载得很好 但是当我加载 ipa 时 它似乎在调用 main 之前在
  • 合并列表中的数据框[重复]

    这个问题在这里已经有答案了 这是早期的一个分支post https stackoverflow com questions 29981195 find top 10 and 10 20 decile entries from datafra
  • 如何在变异后将 t.test() 应用于多对列

    这个问题与此相关跨多列进行 T 检验或整理数据 https stackoverflow com questions 69951627 t tests across multiple columns or tidy the data 6995