R中的配对t检验给了我这个错误:没有足够的“x”观察值
我尝试使用na.rm=True,但仍然是相同的错误。 我在3个集群上运行了下面的代码片段,但是我只能看到第一个集群的t测试结果。 A、 B是具有以下列的数据帧:ID、columna、columnb、cluster。我想对A列和B列进行配对t检验R中的配对t检验给了我这个错误:没有足够的“x”观察值,r,statistics,R,Statistics,我尝试使用na.rm=True,但仍然是相同的错误。 我在3个集群上运行了下面的代码片段,但是我只能看到第一个集群的t测试结果。 A、 B是具有以下列的数据帧:ID、columna、columnb、cluster。我想对A列和B列进行配对t检验 for (i in 1:n){ print (paste ("cluster",i,sep="_")) A<-A[A$cluster==i,] print(t.test(A$columna,A$columnb,paired=
for (i in 1:n){
print (paste ("cluster",i,sep="_"))
A<-A[A$cluster==i,]
print(t.test(A$columna,A$columnb,paired=True,na.rm=T))
B<-B[B$cluster==i,]
print(t.test(B$columna,B$columnb,paired=True,na.rm=T))}
我只能得到I=1集群的结果,而对于I=2集群,我没有得到足够的x观测值,或者考虑通过迭代所有唯一集群,将子集数据帧传递到用户定义的通用方法。输出成为t检验结果的列表
proc_ttest <- function(df) t.test(df$columna, df$columnb, paired=True, na.rm=TRUE)
a_ttest_list <- by(A, A$cluster, proc_ttest)
b_ttest_list <- by(B, B$cluster, proc_ttest)
# RESULTS
a_ttest_list$`1` # NAME INDEX
b_ttest_list$`1`
a_ttest_list[[2]] # NUMBER INDEX
a_ttest_list[[2]]
...
循环中的第一个赋值将清除除第一次通过时cluster==1之外的所有元素。在那之后,就没有其他的了。哦,你的意思是说第二个循环不会删除i=1和3并保留2?一种方法:Atmp我尝试了这个方法,它奏效了。有没有其他方法可以有效地编写相同的代码。。?
A <- transform(A, cluster = paste0("cluster_", cluster))
a_ttest_list <- by(A, A$cluster, proc_ttest)
a_ttest_list$cluster_1
a_ttest_list$cluster_2
a_ttest_list$cluster_3
B <- transform(B, cluster = paste0("cluster_", cluster))
b_ttest_list <- by(B, B$cluster, proc_ttest)
b_ttest_list$cluster_1
b_ttest_list$cluster_2
b_ttest_list$cluster_3