2017-07-07 75 views
1

我有兩個18乘48的數據集。其中一人死亡,另一人死亡。兩者具有相同的列名稱(CNP1,CNP2,...,CNP48)。我想計算每個CNP的P值。 ,我使用的功能如下:如何計算48列的p值並保存結果

t.test(died_CNP $ CNP1,survived_CNP $ CNP1)[3] - 如何使用此功能的48列一氣呵成,並保存導致變量(p1,p2,...,p48)?

回答

1

您可以遍歷列。

pVals <- numeric() 
for(i in 1:ncol(died_CNP)) 
    pVals[i] <- t.test(died_CNP[,i],survived_CNP[,i])$p.value 

所得pVals將長度48的數值向量。建議在使用p.adjust避免multiple comparisons problem

pValsAdjusted <- p.adjust(pVals) 
1

這是太長了評論調整p值,而是延伸格里高爾的答案。關鍵的區別是它構造了for循環而沒有增長對象。

pVals <- vector ("numeric", length = ncol (died_CNP)) 
for (i in seq_along (pVals)){ 
    pVals[i] <- t.test(died_CNP[[i]], survived_CNP[[i]])$p.value 
} 

或者,你可以向量化它

pVals <- vapply (seq_along (died_CNP), 
      function (i){ 
      t.test(died_CNP[,i],survived_CNP[,i])$p.value 
      }, 
      numeric(1)) 

(類型手機上,測試的代碼)