运行 Dataframe 中筛选列的 T 检验

Run T Test on Filtered Column in Dataframe

我有一个包含 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 时。这可能吗?

我们可以使用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]