您好,我有一個資料框,其中包含有關兩個因素相關性的資訊,看起來有點像這樣。
Factor_1 Factor_2 value
a b 0.8
a a 1
a d 0.6
b c 0.4
b b 1
a c 0.2
b d 0.75
b a 0.8
c a 0.2
c c 1
c d 0.1
c b 0.4
如您所見,當 Factor_1 和 Factor_2 具有相同的值時,它們的相關性為 1。此外,每個因子的數量不匹配(Factor_1 具有 a,b,c 而 Factor_2 具有 a,b,c,d。)
使用此資料框,我想創建一個平方資料框,其中 Factor_1 的值作為行名和列名,并且值與每個相關值匹配。它應該看起來像這樣。
a b c
a 1 0.8 0.2
b 0.8 1 0.4
c 0.2 0.4 1
有什么方法可以使用 tidyverse 創建這個資料框?提前致謝!
uj5u.com熱心網友回復:
在基礎 R 中:
xtabs(value~Factor_1 Factor_2, df)[,-4]
Factor_2
Factor_1 a b c
a 1.00 0.80 0.20
b 0.80 1.00 0.40
c 0.20 0.40 1.00
如果您需要它作為dataframe:
as.data.frame.matrix(xtabs(value~., df)[,1:3])
a b c
a 1.0 0.8 0.2
b 0.8 1.0 0.4
c 0.2 0.4 1.0
你也可以使用
xtabs(value~.,subset(df, Factor_1 %in%Factor_2 & Factor_2 %in%Factor_1))
Factor_2
Factor_1 a b c
a 1.0 0.8 0.2
b 0.8 1.0 0.4
c 0.2 0.4 1.0
uj5u.com熱心網友回復:
你可以試試
library(dplyr)
library(tidyr)
df %>%
filter(Factor_2 %in% unique(Factor_1), Factor_1 %in% unique(Factor_2)) %>%
arrange(Factor_1, Factor_2) %>%
pivot_wider(id_cols = Factor_1, names_from = Factor_2, values_from = value) %>%
column_to_rownames(var = "Factor_1")
a b c
a 1.0 0.8 0.2
b 0.8 1.0 0.4
c 0.2 0.4 1.0
uj5u.com熱心網友回復:
df %>% arrange(Factor_1,Factor_2) %>%
pivot_wider(names_from = Factor_2, values_from = value)%>%
select(1:(nrow(.) 1))
# A tibble: 3 × 4
Factor_1 a b c
<chr> <dbl> <dbl> <dbl>
1 a 1 0.8 0.2
2 b 0.8 1 0.4
3 c 0.2 0.4 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/494884.html
下一篇:總結R中串列串列中的出現次數
