将数据框转换为R中的邻接矩阵格式
Convert data frame into adjacency matrix format in R
我的数据是这样的:
Sample_A Sample_B Value
Rabbit Mouse 1.2
Mouse Tiger 7.89
Tiger Lion -0.9
Mouse Rabbit 1.2
Lion Rabbit 98.13
我想把它变成这样的格式:
Lion Tiger Mouse Rabbit
Rabbit 98.13 . .
Mouse
Lion
Tiger
所以,我希望我的第二列 (sample2) 的每一行都单独成为一列,然后相应地分配赋值。样本名称的顺序无关紧要。我的真实数据有 2000 行和相同的 3 列。有没有办法在 R 中准备我想要的矩阵?任何功能使用?稍后我打算绘制它,这就是我需要它的原因。谢谢
这听起来像是使用枢轴的教科书案例。 There are many ways to do this in R。这是基本的 R 解决方案:
#Your example data:
original <- data.frame(Sample_A = c("Rabit", "Mouse", "Tiger", "Mouse", "Lion"),
Sample_B = c("Mouse", "Tiger", "Lion", "Rabit", "Rabit"),
Value = c(1.2, 7.89, -0.9, 1.2, 98.13))
#Pivot:
with(original, tapply(Value, list(Sample_A, Sample_B), FUN = identity))
输出:
Lion Mouse Rabit Tiger
Lion NA NA 98.13 NA
Mouse NA NA 1.20 7.89
Rabit NA 1.2 NA NA
Tiger -0.9 NA NA NA
我的数据是这样的:
Sample_A Sample_B Value
Rabbit Mouse 1.2
Mouse Tiger 7.89
Tiger Lion -0.9
Mouse Rabbit 1.2
Lion Rabbit 98.13
我想把它变成这样的格式:
Lion Tiger Mouse Rabbit
Rabbit 98.13 . .
Mouse
Lion
Tiger
所以,我希望我的第二列 (sample2) 的每一行都单独成为一列,然后相应地分配赋值。样本名称的顺序无关紧要。我的真实数据有 2000 行和相同的 3 列。有没有办法在 R 中准备我想要的矩阵?任何功能使用?稍后我打算绘制它,这就是我需要它的原因。谢谢
这听起来像是使用枢轴的教科书案例。 There are many ways to do this in R。这是基本的 R 解决方案:
#Your example data:
original <- data.frame(Sample_A = c("Rabit", "Mouse", "Tiger", "Mouse", "Lion"),
Sample_B = c("Mouse", "Tiger", "Lion", "Rabit", "Rabit"),
Value = c(1.2, 7.89, -0.9, 1.2, 98.13))
#Pivot:
with(original, tapply(Value, list(Sample_A, Sample_B), FUN = identity))
输出:
Lion Mouse Rabit Tiger
Lion NA NA 98.13 NA
Mouse NA NA 1.20 7.89
Rabit NA 1.2 NA NA
Tiger -0.9 NA NA NA