我如何编写一个更改结构并替换值的函数?

问题描述 投票:0回答:2

我的数据集存在一些结构性问题,我正在尝试编写一个名为'convert_number'的函数,该函数将完成以下任务:-更改列中的数字,以使“,”为“。”-将该列转换为双精度该函数还应该能够调用不同的列,因为大约有10个我想更改。

我有几个想法,但是都没有用。我希望对此有一些新的想法,有人有什么建议吗?预先谢谢你

r function numeric gsub
2个回答
0
投票

您可以使用以下内容,

f1 <- function(x){
    x1 <- as.numeric(sub(',', '.', x))
    return(x1)
    }

然后您可以将其应用于任何列,即

df[your_cols] <- lapply(df[your_cols], f1)

0
投票

如果我们有兴趣在将,更改为.之后将列转换为数值,则一个选项是

colsofinterest <- names(df1)[1:10]
df1[colsofinterest] <- lapply(df1[colsofinterest], function(x) 
           as.numeric(sub(",", ".", x)))

更简单的选择是在读取数据集时,指定dec,它将自动将类型更改为double

df1 <- read.csv('file.csv', dec = ",")

或在dplyr中>

library(dplyr)
df1 %>%
   mutate_at(vars(colsofinterest), ~ as.numeric(str_replace(., ",", ".")))
© www.soinside.com 2019 - 2024. All rights reserved.