[英]How do I extract estimates and p-value from cor.test results across multiple groups?
[英]Extracting Estimate and P-value from multiple cor.test() results in R
我有一個54頁的Excel工作簿。 每張紙代表一個國家,是一個17 x 11的矩陣,其中行是年份,列是經濟變量。
我可以使用readxl軟件包將Excel工作簿帶入R中。
sheet_list <- lapply(1:54, function(i) read_excel("FDI-vs-variables.xlsx", sheet = i, na="NA"))
現在,我的數據以數據框列表sheet_list的形式存在 ,其中每個數據框代表我的工作簿的一張紙。
接下來,我想對所有工作表/數據框上的兩個變量進行相關性測試。
例如,所有工作表/數據框中的第三列是GDP,第八列是營養不良的人口百分比。 我可以編寫一個函數來捕獲工作表/數據框中的相應列,並使用該數據運行相關性測試。
dfCorTest <- function(df){
rslt <- cor.test(df[[3]],df[[8]], method="kendall",use="pairwise")
return(rslt)
}
然后,我使用lapply將功能應用於我的54個工作表/數據框列表中的每個工作表/數據框 。
cor_results <- lapply(sheet_list, dfCorTest)
這將產生一個列表cor_results的列表, 其中詳細列出了54種不同的cor.test運行的結果。
如何僅從此列表列表中提取相關估計(tau)和p值?
我知道您可以使用$estimate
和$p.value
p.value調用cor.test的特定結果,並且可以在cor_results列表中進行調用,如下所示:
cor_results[[1]]$estimate
cor_results[[1]]$p.value
cor_results[[2]]$estimate
cor_results[[2]]$p.value
...and so on
但是,這樣做的有效方法是什么? 理想情況下,我希望能夠寫出文本文件,其中輸出看起來像
SheetNo Estimate P-value
1 3.33 0.054
2 -2.76 0.889
... ... ...
54 1.23 0.007
我知道在如何提取...中有一個類似的問題,但它們用於循環而不是應用來運行多個相關性測試,而且我似乎無法計算出等效的代碼。
更新/編輯
下面的用戶Parfait建議的答案有效(謝謝!)。 修改函數返回的內容以及sapply和transpose的組合:
dfCorTest <- function(df){
rslt <- cor.test(df[[3]], df[[8]], method="kendall", use="pairwise")
return(c(estimate = rslt$estimate,
p.value = rslt$p.value))
}
cor_results <- t(sapply(sheet_list, dfCorTest))
考慮將sapply
用於相關結果的矩陣輸出(即s的隱式版本),並調整返回對象和最后的轉置t()
:
dfCorTest <- function(df){
rslt <- cor.test(df[[3]], df[[8]], method="kendall", use="pairwise")
return(c(estimate = rslt$estimate,
p.value = rslt$p.value))
}
cor_results <- t(sapply(sheet_list, dfCorTest))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.