r-将Tibble带入数据帧形式,列作为行和列索引



我在R 中有以下可修改的数据帧

tribble(
~x, ~y,  ~z,
"a", "A1",  3.6,
"b", "A2",  8.5,
"c", "A1",  4.6,
"d", "A2",  6.5,
"e", "A1",  1.6,
"f", "A2",  9.5
)
# A tibble: 6 x 3
x     y         z
<chr> <chr> <dbl>
1 a     A1      3.6
2 b     A2      8.5
3 c     A1      4.6
4 d     A2      6.5
5 e     A1      1.6
6 f     A2      9.5

有没有一种方法可以将tibble变成以下形式的

a   b   c   d   e   f
A1 3.6 4.6 1.6 8.5 6.5 9.5
A2 3.6 4.6 1.6 8.5 6.5 9.5

我们可以使用

library(dplyr)
library(tidyr)
df %>%
pivot_wider(names_from = x, values_from = z) %>%    
mutate(across(where(is.numeric), ~ .[!is.na(.)]))
# A tibble: 2 x 7
y         a     b     c     d     e     f
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 A1      3.6   8.5   4.6   6.5   1.6   9.5
2 A2      3.6   8.5   4.6   6.5   1.6   9.5

获取宽格式的数据,并fillNA值-

library(dplyr)
library(tidyr)
df %>%
pivot_wider(names_from = x, values_from = z) %>%
fill(everything(), .direction = 'downup')
#   y       a     b     c     d     e     f
#  <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 A1      3.6   8.5   4.6   6.5   1.6   9.5
#2 A2      3.6   8.5   4.6   6.5   1.6   9.5

最新更新