使用dplyr将中介分析单行结果数据框重排为多行规范格式
实现方案
你可以配合tidyr(tidyverse生态组件,和dplyr适配性最优)的长表转换函数实现需求,完整代码如下:
1. 加载依赖包
library(dplyr) library(tidyr)
2. 数据转换代码
# 示例输入数据 df <- read.table(text="lab_x lab_m lab_y coef_xm coef_my coef_xy v1 v2 v3 -0.21*** 0.08*** -0.084***", header = TRUE) # 转换逻辑 result <- df %>% # 提取3个系数列为长格式 pivot_longer( cols = starts_with("coef_"), names_to = "relation", names_prefix = "coef_", values_to = "coef" ) %>% # 按系数对应的变量关系匹配var1、var2 mutate( var1 = case_match(relation, "xm" ~ lab_x, "my" ~ lab_m, "xy" ~ lab_x ), var2 = case_match(relation, "xm" ~ lab_m, "my" ~ lab_y, "xy" ~ lab_y ) ) %>% # 输出指定列,可加arrange调整行顺序匹配示例 select(var1, var2, coef) %>% arrange(var1, desc(var2))
输出结果预览
# A tibble: 3 × 3 var1 var2 coef <chr> <chr> <chr> 1 v1 v2 -0.21*** 2 v2 v3 0.08*** 3 v1 v3 -0.084***
如果是多组中介结果的多行输入,上述代码无需额外调整即可自动批量转换。
内容的提问来源于stack exchange,提问作者L. Tucker
相关产品推荐
相关产品推荐

