我有兩個數據幀,我想對行進行獨立的2組t測試(iettest(y1,y2),其中y1是dataframe1中的一行,y2是匹配在dataframe2行)R:t測試2個數據幀的行
什麼是完成此最佳方式?
編輯: 我剛剛發現格式:dataframe1 [i,] dataframe2 [i,]。這將循環工作。這是最佳解決方案嗎?
我有兩個數據幀,我想對行進行獨立的2組t測試(iettest(y1,y2),其中y1是dataframe1中的一行,y2是匹配在dataframe2行)R:t測試2個數據幀的行
什麼是完成此最佳方式?
編輯: 我剛剛發現格式:dataframe1 [i,] dataframe2 [i,]。這將循環工作。這是最佳解決方案嗎?
您列出的方法是合理的,只需確保預先分配存儲矢量。我會仔細檢查你是否真的想比較行而不是列。大多數我的工作與數據集有每一行作爲觀察單位,列表示單獨反應/姑興趣列,這是你的數據 - 所以,如果這就是你需要做的,這裏有一個辦法:
#Fake data
df1 <- data.frame(matrix(runif(100),10))
df2 <- data.frame(matrix(runif(100),10))
#Preallocate results
testresults <- vector("list", nrow(df1))
#For loop
for (j in seq(nrow(df1))){
testresults[[j]] <- t.test(df1[j,], df2[j,])
}
你現在有一個列表,只要您有df1
中的行。然後我會推薦使用lapply
和sapply
來輕鬆地從列表對象中提取事物。
將數據存儲爲列會更有意義。
可以移調通過
df1_t <- as.data.frame(t(df1))
df2_t <- as.data.frame(t(df2))
一個data.frame然後你就可以在一個時間
t.test_results <- mapply(t.test, x= df1_t, y = df2_t, SIMPLIFY = F)
使用mapply
循環通過兩個data.frames
一列或者你可以使用Map
這是一個簡單的包裝mapply
與SIMPLIFY = F
(從而節省擊鍵!)
t.test_results <- Map(t.test, x = df1_t, y = df2_t)
謝謝你的智慧的話。我確實不得不在整個行上進行測試,也許我的文件設計很差。下次我會記住! – bdeonovic
@Chase我不知道你是否可以在解決方案中使用'paired = T'進行配對t檢驗。目前它給了我一個錯誤... –