You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用dplyr对数据框多列参数做单调性判断并生成新列

正确实现代码

首先使用rowwise()按行分组,搭配c_across()提取每行的参数列值为向量,再做匹配判断:

library(dplyr)

df2 <- df1 %>%
  rowwise() %>%
  mutate(
    monotonic = dplyr::case_when(
      identical(sort(unique(c_across(ends_with("param")))), "down") ~ "down",
      identical(sort(unique(c_across(ends_with("param")))), "unchanged") ~ "static",
      identical(sort(unique(c_across(ends_with("param")))), "up") ~ "up",
      identical(sort(unique(c_across(ends_with("param")))), c("down", "unchanged")) ~ "down",
      identical(sort(unique(c_across(ends_with("param")))), c("down", "up")) ~ "non",
      identical(sort(unique(c_across(ends_with("param")))), c("unchanged", "up")) ~ "up",
      identical(sort(unique(c_across(ends_with("param")))), c("down", "unchanged", "up")) ~ "non",
      TRUE ~ "error"
    )
  ) %>%
  ungroup()

关键修改说明

  • rowwise()将数据框按行分组,后续mutate操作会逐行执行
  • c_across()替代across(),作用是将当前行选中的多列值拼接为向量,满足unique、sort的输入要求
  • 用identical()做全等比较,避免不同长度向量比较时的循环匹配问题
  • 运算结束后调用ungroup()取消行分组,避免后续数据操作受行分组影响

运行后得到的monotonic列结果如下:

namemonotonic
anndown
bobnon
camup
danstatic
evenon

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 21:24:01