'Convert dataframe of two characters and a value into a trinagle matrix in R
I have a dataframe/tibble like this:
d <- data.frame(groupa = c("A", "A", "A", "B", "B", "C"),
groupb = c("A", "B", "C", "B", "C", "C"),
val = c(0, 1.1, 2.0, 0, 2.5, 0))
>d
groupa groupb val
1 A A 0.0
2 A B 1.1
3 A C 2.0
4 B B 0.0
5 B C 2.5
6 C C 0.0
And I would like to turn it into a pairwise matrix like this:
A B C
A 0
B 1.1 0 0
C 2.0 2.5 0
I can't figure out any way to make each value of groupa into a column, groupb into a row, and the value as the meeting point in the matrix.
A tidyverse method would be greatly appreciated!
Solution 1:[1]
We can use xtabs from base R
xtabs(val ~ groupb + groupa, d)
-output
groupa
groupb A B C
A 0.0 0.0 0.0
B 1.1 0.0 0.0
C 2.0 2.5 0.0
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | akrun |
