【问题标题】:Run T Test on Filtered Column in Dataframe对数据框中的过滤列运行 T 检验
【发布时间】:2015-08-14 16:12:07
【问题描述】:

我有一个包含 3 列的数据框:
df=

+------+------+---+
| Var1 | Var2 | n |
+------+------+---+
| Y    | N    | 5 |
| Y    | Y    | 6 |
| Y    | N    | 3 |
| N    | Y    | 8 |
| N    | N    | 1 |
| N    | Y    | 9 |
+------+------+---+

我想对 Var2 中的 Y 与 N 中的值进行 t 检验,但仅限于 Var1 = Y 时。这可能吗?

【问题讨论】:

  • 你试过subsetsubset(df, Var1=='Y')然后对子集数据进行测试。或许library(data.table); setDT(df)[Var1=='Y', t.test(n[Var2=='N'], n[Var2=='Y'])$p.value](例子可能观察不够)
  • 这“有效”,但有没有办法在不先创建新数据框的情况下做到这一点?
  • 你可以做with(df[df$Var1 == "Y",], t.test(n[Var2 == "Y"], n[Var2 == "N"]))
  • @Adam_G 我只使用setDT 转换为data.table。它应该是有效的
  • 感谢这些。那行得通。

标签: r dataframe statistics


【解决方案1】:

我们可以使用data.table。将'data.frame'转换为'data.table'(setDT(df)),我们设置逻辑条件Var1=='Y'来索引行,子集'n'元素,其中Var2=='N'Var2=='Y'分别,并执行t.test.

  library(data.table)
   setDT(df)[Var1=='Y', t.test(n[Var2=='N'], n[Var2=='Y'])$p.value]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2013-02-19
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    相关资源
    最近更新 更多