我的数据集存在一些结构性问题,我正在尝试编写一个名为'convert_number'的函数,该函数将完成以下任务:-更改列中的数字,以使“,”为“。”-将该列转换为双精度该函数还应该能够调用不同的列,因为大约有10个我想更改。
我有几个想法,但是都没有用。我希望对此有一些新的想法,有人有什么建议吗?预先谢谢你
您可以使用以下内容,
f1 <- function(x){
x1 <- as.numeric(sub(',', '.', x))
return(x1)
}
然后您可以将其应用于任何列,即
df[your_cols] <- lapply(df[your_cols], f1)
如果我们有兴趣在将,
更改为.
之后将列转换为数值,则一个选项是
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(., ",", ".")))