R语言使用dplyr计算每行匹配指定模式列的中位数
你可以结合dplyr的行运算函数和列选择规则实现需求,具体实现代码如下:
1. 加载依赖包
library(dplyr)
2. 按行计算目标列中位数
# 假设你的数据集存储在变量df中 df_result <- df %>% # 开启按行计算模式 rowwise() %>% mutate( # 自定义生成的中位数列名,可自行修改 P_d_median = median( # 选中所有列名以P开头、d结尾的列,合并为向量传入中位数计算函数 c_across(matches("^P.*d$")), # 若数据无缺失值可删除该行参数 na.rm = TRUE ) ) %>% # 取消行分组模式,避免后续运算出现预期外的按行逻辑 ungroup()
参数说明
matches("^P.*d$"):用正则表达式匹配目标列,^P规定列名首字符为P,d$规定列名尾字符为d,中间.*匹配任意长度的任意字符- 如果你想要先验证匹配的列是否符合预期,可以先执行以下代码输出选中的列名:
对应你的示例数据集,输出结果应为names(select(df, matches("^P.*d$")))"P16401d" "P7Z958d",符合筛选要求。
内容的提问来源于stack exchange,提问作者Erin
相关产品推荐
相关产品推荐

