【问题标题】:replace cell values greater than 0 with column name用列名替换大于 0 的单元格值
【发布时间】:2022-11-23 18:45:32
【问题描述】:

我有一个具有以下结构的数据框:

Df = data.frame(
  Col1 = c(1,0,0),
  Col2 = c(0,2,1),
  Col3 = c(0,0,0)
)

我想要得到的是一个数据框,其中值大于 0 的单元格被列名替换,小于 1 的单元格被 NA 替换。生成的数据框将是这样的:

Df = data.frame(
      Col1 = c("Col1",NA,NA),
      Col2 = c(NA,"Col2","Col2"),
      Col3 = c(NA,NA,NA)
    )

到目前为止,我尝试使用 this solution 以及 apply()mutate_if()across() 等函数,但我无法得到我想要的。

【问题讨论】:

    标签: r dplyr tidyr


    【解决方案1】:

    你可以这样做:

    Df %>%
     mutate(across(everything(), ~ if_else(. > 0, cur_column(), NA_character_)))
    
      Col1 Col2 Col3
    1 Col1 <NA> <NA>
    2 <NA> Col2 <NA>
    3 <NA> Col2 <NA>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 2021-04-07
      • 2020-06-21
      相关资源
      最近更新 更多