首页 > 解决方案 > 替换值多列

问题描述

我有一个包含 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)是否有意义?

最后,我想用“。”获得价值。作为逗号,没有任何“<”或“>”或空格。

有没有办法做到这一点?谢谢!

标签: rreplace

解决方案


这是一个基本的 R 方式。

mydata[affectedColumns] <- lapply(mydata[affectedColumns], \(x){
  for(nm in names(replace)) x <- sub(nm, replace[nm], x)
  as.numeric(x)
})

推荐阅读