r - 替换值多列
问题描述
我有一个包含 25 列的数据表“数据”。在某些包含数值(但在导入后定义为字符)的列(大约 15 个)中,我想将某些字符替换为 fe"," 为 ".","<" 为 "",">" 为"" 等(可能是 10 种或更多组合),因为有些值类似于 "<0,17" 或 "> 1,5"。
随着列名的变化(因为它影响不同的数据表),我想以这种方式解决它(我的代码不正确,它只是为了展示我想要做的事情)。
replace <- list ("," = ".", "<" = "", ">" = "")
affectedColumns = c("name1", "name2", "name3" ... "name 14", "name 15").
mydata %>%
mutate(affectedColumns, replace)
另一个问题是,有些列是数字,有些是字符。首先将“affectedColumns”中的所有值转换为字符(as.character)>然后执行替换过程然后将它们全部转换回数字(as.numeric)是否有意义?
最后,我想用“。”获得价值。作为逗号,没有任何“<”或“>”或空格。
有没有办法做到这一点?谢谢!
解决方案
这是一个基本的 R 方式。
mydata[affectedColumns] <- lapply(mydata[affectedColumns], \(x){
for(nm in names(replace)) x <- sub(nm, replace[nm], x)
as.numeric(x)
})
推荐阅读
- python - 如何在python数据框中减去两个时间日期列
- go - 在 Windows 7 中为当前用户在 Windows 服务中执行 InternetSetOptionW
- utf-8 - 特殊字符 č 无法识别(tinymce)
- salesforce - INSUFFICIENT_ACCESS_OR_READONLY 订单项目删除错误,系统管理员配置文件
- git - 处理在不同“环境”中略有不同变化的代码库的正确方法是什么?
- python - 同步两个时间数据帧的最有效方法是什么
- angular - 为什么输入值在父项中没有改变?
- regex - 在 Kotlin 中使用正则表达式在字符串中查找一个或多个单词
- powershell - 尝试导出网络设置以重新安装操作系统
- json - Athena/Presto 在 JSON 对象中查找具有最大值的键