r - 识别并替换数据框列表中所有数据框中存在的数值列的最小值
问题描述
我需要一种方法来识别数据帧列表中所有数据帧中出现的特定列中的最小值,并将其替换为一些非数字字符。例如:
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 选项
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), "*")))
推荐阅读
- google-apps-script - 将电子表格复制到 GDrive 中的特定文件夹中
- laravel - 雄辩的如何在父表值不变的情况下更新子表值
- php - Wordpress 如何存储已登录的用户?
- node.js - msteams 传出 webhook 的 IP 白名单
- node.js - zip 警告:压缩目录时缺少结束签名
- mysql - MySQL 工作台:如何将特定列导出为更新语句?
- javascript - 一旦前一个被循环,如何循环遍历一个数组?
- database - 如何获取 sqflite Flutter 数据库的正确路径?
- linux - 如何通过 Linux 命令“grep”获取值
- python - 在 C++ 中嵌入 Python 时如何消除导入错误?