我在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
获取宽格式的数据,并fill
NA
值-
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