R语言如何使用pivot_longer将宽表转为仅含value列的长表?
R tidyverse 宽表转长表解决方案
核心实现代码
library(tidyverse) # 转换长表代码 df_result <- df %>% pivot_longer( # 筛选所有value_前缀的列,无需手动构造列名向量 cols = starts_with("value_"), # 按下划线拆分原列名 names_sep = "_", # 拆分后第一部分"value"直接丢弃,第二部分存为time列 names_to = c(NA, "time"), # 数值存入value列,该参数为默认值可省略,写出来便于理解 values_to = "value" )
说明
你之前的写法未指定列名拆分规则,pivot_longer会默认生成name列存储原列名、value列存储数值,不会自动拆分出time字段。如果你需要沿用自己构造的labels向量,只需要将cols参数替换为cols = all_of(labels)即可,其余参数保持不变就能得到预期结果。
运行上述代码后得到的结果和你要求的输出格式完全一致。
内容的提问来源于stack exchange,提问作者grapestory
相关产品推荐
相关产品推荐

