Можно ли объединить два более подходящих набора столбцов «имя-значение» в один pivot_longer()
вызов?
Вот игрушечный пример. У меня есть два типа значений (a, b) и два типа значений (значение numeri c и двоичный индикатор для отрицательного значения). Можно ли изменить их форму дольше за один вызов функции?
В этом примере используются два вызова pivot_longer()
, и они объединяют их вместе.
set.seed(1)
a_val = rnorm(10)
b_val = rnorm(10)
a_neg = factor(as.numeric(a_val < 0), levels = 0:1, labels = c("No", "Yes"))
b_neg = factor(as.numeric(b_val < 0), levels = 0:1, labels = c("No", "Yes"))
# random data
df <- data.frame(
id = seq(1:10),
a = a_val,
b = b_val,
a_low = a_neg,
b_low = b_neg
)
full_join(
df %>%
select(id, a, b) %>%
pivot_longer(cols = a:b, names_to = "value_type", values_to = "value"),
df %>%
select(id, a_low, b_low) %>%
pivot_longer(cols = a_low:b_low, names_to = "value_type", names_pattern = "([ab])_low", values_to = "low"),
by = c("id", "value_type")
)
#> # A tibble: 20 x 4
#> id value_type value low
#> <int> <chr> <dbl> <fct>
#> 1 1 a -0.626 Yes
#> 2 1 b 1.51 No
#> 3 2 a 0.184 No
#> 4 2 b 0.390 No
#> 5 3 a -0.836 Yes
#> 6 3 b -0.621 Yes
#> 7 4 a 1.60 No
#> 8 4 b -2.21 Yes
#> 9 5 a 0.330 No
#> 10 5 b 1.12 No
#> 11 6 a -0.820 Yes
#> 12 6 b -0.0449 Yes
#> 13 7 a 0.487 No
#> 14 7 b -0.0162 Yes
#> 15 8 a 0.738 No
#> 16 8 b 0.944 No
#> 17 9 a 0.576 No
#> 18 9 b 0.821 No
#> 19 10 a -0.305 Yes
#> 20 10 b 0.594 No
Создано 2020-06 -17 пакетом REPEX (v0.3.0)