在Dataframe中的筛选列上运行T测试

在Dataframe中的筛选列上运行T测试,r,dataframe,statistics,R,Dataframe,Statistics,我有一个包含3列的数据框: df= 我想对n中的值,Y与Var2中的n进行t检验,但仅当Var1=Y时。这可能吗?我们可以使用数据。表。将'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'

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


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

我们可以使用
数据。表
。将'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]

您是否尝试过
子集
子集(df,Var1=='Y')
然后对子集数据进行测试。可能
库(data.table);setDT(df)[Var1=='Y',t.test(n[Var2=='n'],n[Var2=='Y'])$p.value]
(该示例可能没有足够的观察结果)可以“工作”,但有没有一种方法可以不首先创建新的数据帧就完成它?您可以使用(df[df$Var1=='Y',],t.test(n[Var2=='Y',n[Var2=='n'])执行
@Adam\u G我仅使用
setDT
转换为
数据表。这应该是有效的感谢这些。这很有效。
  library(data.table)
   setDT(df)[Var1=='Y', t.test(n[Var2=='N'], n[Var2=='Y'])$p.value]