我有下面的dataframe,我想改变ENV dataframe中的所有列,用case_when函数替换一些值:

  metrics <-
    structure(list(var = c("SST", "SSS"), min = c(-1.82623172259469, 
    0.0106425614590989), max = c(30.7357019713913, 62.4178951570953
    ), Q1 = c(29.6467844102333, 37.2283509056568), Q2 = c(25.0978897764037, 
    35.1366150711973), Q3 = c(1.08054073780591, 33.6817701728394), 
        Q4 = c(-1.75609879755353, 22.3324745864139), slope.L = c(-0.219833625638, 
        -0.478071840394898), slope.R = c(0.352529811255446, 0.0881111953059067
        )), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
    ))
    ENV1<-
    structure(list(SST = c(-1.18181673490857, -1.29487169195505, 
    -1.2891296530063, -1.16459061806231, -1.02749131873705, -0.877831755030538, 
    -0.827006290249864, -0.87501492439503, -0.907842479642887, -0.925488955993432, 
    -0.928734689365441), SSS = c(34.4828464105725, 34.4536828344067, 
    34.4394813115398, 34.4402418419719, 34.4202143674095, 34.3793988878528, 
    34.3479811742902, 34.3259612267216, 34.2944239596526, 34.2533693730831, 
    34.225624174873)), row.names = 30:40, class = "data.frame")

ENV1 |> mutate_all(funs(
  case_when(
    . < metrics[metrics$var == x,]$Q1 ~ 0,
    . <= metrics[metrics$var == x,]$Q3 ~ 1,
    . > metrics[metrics$var == x,]$Q4 ~ 0
  )
))

我的问题是,应该放什么而不是x?我试着使用names(.),一个列的名称(因此它从metrics数据帧中获取一个值.但它不起作用.我还试着使用colnames(.),vars(.),像人物()-没有运气

推荐答案

试试cur_column()

ENV1 %>% 
  mutate(across(everything(), 
  ~case_when(
    . < metrics[metrics$var == cur_column(),]$Q1 ~ 0,
    . <= metrics[metrics$var == cur_column(),]$Q3 ~ 1,
    . > metrics[metrics$var == cur_column(),]$Q4 ~ 0
  )
))

R相关问答推荐

ggplot geom_smooth()用于线性回归虚拟变量-没有回归线

次级y轴R gggplot2

derrr summarise每个组返回多行?

如何改变时间图R中的悬停信息?

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

提取一个列表中单个列的重复观察结果R

为了网络分析目的,将数据框转换为长格式列联表

如何在R中描绘#符号?

如何根据R中其他变量的类别汇总值?

根据约束随机填充向量的元素

如果COLSUM为>;0,则COLNAME为向量

Geom_arcbar()中出错:找不到函数";geom_arcbar";

解析嵌套程度极高的地理数据

在R中的数据框上使用Apply()函数时,如何保留非数字列?

避免在图例中显示VLINS组

注释不会绘制在所有ggplot2面上

附加中缀操作符

修复标签重叠和ggploy内的空间

GgHighlight找不到它创建的列:`Highlight..1`->;`Highlight.....`

与另一个数据帧同名的变异/筛选列