我有一个 struct 如下的数据帧:

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)
    )

到目前为止,我try 了this solution以及apply()mutate_if()across()这样的函数,但我无法得到我想要的东西.

推荐答案

您可以执行以下操作:

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>

R相关问答推荐

R—将各种CSV数字列转换为日期

如何识别倒排的行并在R中删除它们?

将标识符赋给事件序列,避免错误观察

自定义gggraph,使geom_abline图层仅在沿x轴的特定范围内显示

按组计算列中1出现的间隔年数

使用R将简单的JSON解析为嵌套框架

每行不同列上的行求和

将美学添加到ggploy中的文本标签

位置_道奇在geom_point图中不躲避

R中的交叉表

如何在给定的环境中找到函数的函数参数?

如何将数据框压缩为更宽,同时将行输入保持为行输入,而不是R中的列名?

以列名的字符向量作为参数按行应用自定义函数

同时使用Scale_y_Break和Scale_x_Continue时,X轴值出现两次

如何 suppress 条形图中的零条?

使用可变样本大小从数据帧中随机采样

我无法在geom_point的gglot中为不同的组定义调色板

将来自具有特定条件的两个不同数据帧的列相乘

Download.file保留原始名称或图纸名称

条形图,每组2条