这是我的输入数据集,其中包含一行和 12 列/变量:
df <- data.frame(q_q10=0,q_q20=0, q_q30=0,q_q40=400,
q_q10_low=0,q_q20_low=0,q_q30_low=0,q_q40_low=350,
q_q10_up=24,q_q20_up=24,q_q30_up=24,q_q40_up=500)
我想重塑 df ,以便得到一个包含 4 行和 3 个变量(分位数、下、上)的数据框。换句话说,我希望 df2 看起来像:
data.frame(quantile=c(0,0,0,400), low=c(0,0,0,350), up=c(24,24,24,500))
如何使用
pivot_longer()
包中的 tidyr
函数来做到这一点?
谢谢!!
我认为这不可能一步完成,所以我们将双重旋转它。不确定您是否需要
qcode
(我的名字)栏,我保留它以防万一。
library(dplyr)
library(tidyr)
pivot_longer(df, cols = everything(), names_pattern = "q_([^_]*)(_.*)?", names_to = c("qcode", "lowup")) %>%
mutate(lowup = if_else(nzchar(lowup), sub("^_", "", lowup), "quantile")) %>%
pivot_wider(id_cols = qcode, names_from = lowup, values_from = value)
# # A tibble: 4 × 4
# qcode quantile low up
# <chr> <dbl> <dbl> <dbl>
# 1 q10 0 0 24
# 2 q20 0 0 24
# 3 q30 0 0 24
# 4 q40 400 350 500