首页 > 解决方案 > 识别并替换数据框列表中所有数据框中存在的数值列的最小值

问题描述

我需要一种方法来识别数据帧列表中所有数据帧中出现的特定列中的最小值,并将其替换为一些非数字字符。例如:

df1 <- data.frame(x=c("a","b","c"), y=c(2,4,6))
df2 <- data.frame(x=c("a","b","c"), y=c(10,20,30))
myList <- list(df1, df2)


[[1]]
  x y
1 a 2
2 b 4
3 c 6

[[2]]
  x  y
1 a 10
2 b 20
3 c 30

应该成为

[[1]]
  x y
1 a *
2 b 4
3 c 6

[[2]]
  x  y
1 a *
2 b 20
3 c 30

最好的方法是什么?如果有人知道 Base R 和外部软件包 (purrr) 解决方案,那就太好了。

谢谢!

标签: r

解决方案


这是一个基本的 R 选项

lapply(myList, function(df) transform(df, y = replace(y, which.min(y), "*")))
#[[1]]
#  x y
#1 a *
#2 b 4
#3 c 6
#
#[[2]]
#  x  y
#1 a  *
#2 b 20
#3 c 30

或者在tidyverse

library(tidyverse)
map(myList, ~.x %>% mutate(y = replace(y, which.min(y), "*")))

推荐阅读