我正在嘗試計算以下國家與美國的相關性。我的第一個 df 中有一個相對較大的資料集,其中包含 80 多個變數和 3000 多個觀察值,如下所示,因此我嘗試使用 R 來自動執行此操作,而不是使用 excel。
我正在嘗試計算第一個 df 中的國家(即德國、意大利、日本等)與第二個 df 中的美國的相關性。所以它應該去德國 - 美國,意大利 - 美國,日本 - 美國等等。
不太確定我應該如何開始 - 我應該回圈第一個表中的每一列以與第二個中的 USA 相關聯嗎?非常感謝幫助。
謝謝!
df1
| 日期 | 德國 | 意大利 | 日本 | 更多國家... |
|---|---|---|---|---|
| 01-01-2020 | 1000 | 200 | 2304 | 更多數字... |
| 01-02-2020 | 2000年 | 389 | 2098 | 更多數字... |
等等
df2
| 日期 | 美國 |
|---|---|
| 01-01-2020 | 500 |
| 01-02-2020 | 600 |
等等
uj5u.com熱心網友回復:
您可以使用這種方法:
library(dplyr);library(magrittr)
countries = c("Germany", "Italy", "Japan")
left_join(df1, df2) %>% summarise(across(countries, ~cor(., USA)))
left_join合并df1并df2在一起,使日期總是匹配彼此summarise允許您執行按列操作across告訴您要與 USA 關聯的列~cor(., USA)說采取每個國家并執行與美國的相關性
Germany Italy Japan
<dbl> <dbl> <dbl>
1 -0.393 -0.147 -0.214
感謝 Damien Georges 提供的資料。
uj5u.com熱心網友回復:
這樣的事情應該可以解決問題:
library(dplyr)
df1 <-
tibble(
date = 2001:2010,
Germany = runif(10),
Italy = runif(10),
Japan = runif(10)
)
df2 <-
tibble(
date = 2001:2010,
USA = runif(10)
)
df.cor <-
df1 %>%
summarise(across(-one_of('date'), ~ cor(.x, df2$USA)))
df.cor
注意:您必須確保df1和之間的日期一致df2。您可以使用連接功能(例如left_join)來確保這一點
uj5u.com熱心網友回復:
這里有兩個基本的 R 解決方案,具體取決于您想要的最終格式。
兩者都帶有 R 4.1.0 中引入的新管道運算子。
df2[-1] |> cor(df1[-1]) |> as.data.frame()
# Germany Italy Japan
#USA 0.3161338 0.5483885 0.1725733
df1[-1] |> cor(df2[-1]) |> as.data.frame()
# USA
#Germany 0.3161338
#Italy 0.5483885
#Japan 0.1725733
更傳統但等效的版本:
as.data.frame(cor(df2[-1], df1[-1]))
as.data.frame(cor(df1[-1], df2[-1]))
資料
從Damien Georges借用的資料創建代碼。
set.seed(2021)
df1 <-
data.frame(
date = 2001:2010,
Germany = runif(10),
Italy = runif(10),
Japan = runif(10)
)
df2 <-
data.frame(
date = 2001:2010,
USA = runif(10)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/312505.html
標籤:r
