R语言实现:将数据框中大于0的单元格替换为列名
解决方案:替换DataFrame单元格值为列名或NA
这里提供两种简洁的实现方式,分别基于Base R和dplyr包:
Base R 实现
直接遍历列名完成判断替换:
# 原始数据 Df <- data.frame( Col1 = c(1,0,0), Col2 = c(0,2,1), Col3 = c(0,0,0) ) # 处理数据 Df_result <- as.data.frame(lapply(names(Df), function(col) { ifelse(Df[[col]] > 0, col, NA_character_) })) # 恢复原列名 names(Df_result) <- names(Df)
dplyr 实现
利用across()结合cur_column()获取当前列名,精准完成替换:
library(dplyr) # 原始数据 Df <- data.frame( Col1 = c(1,0,0), Col2 = c(0,2,1), Col3 = c(0,0,0) ) # 处理数据 Df_result <- Df %>% mutate(across(everything(), ~ifelse(.x > 0, cur_column(), NA_character_)))
两种方法最终都会得到你预期的结果:
> Df_result Col1 Col2 Col3 1 Col1 <NA> <NA> 2 <NA> Col2 <NA> 3 <NA> Col2 <NA>
内容的提问来源于stack exchange,提问作者Daniel B.G
相关产品推荐
相关产品推荐

