gpt4 book ai didi

删除千位分隔符

转载 作者:行者123 更新时间:2023-12-01 16:21:44 26 4
gpt4 key购买 nike

我导入了一个 Excel 文件并得到了这样的数据框

structure(list(A = structure(1:3, .Label = c("1.100", "2.300", 
"5.400"), class = "factor"), B = structure(c(3L, 2L, 1L), .Label = c("1.000.000",
"500", "7.800"), class = "factor"), C = structure(1:3, .Label = c("200",
"3.100", "4.500"), class = "factor")), .Names = c("A", "B", "C"
), row.names = c(NA, -3L), class = "data.frame")

我现在想转换这些 charsnumeric甚至 integer 。但是,点字符 ( . ) 不是小数点,而是“千位分隔符”(德语)。

如何正确转换数据框?

我尝试过这个:

df2 <- as.data.frame(apply(df1, 2, gsub, pattern = "([0-9])\\.([0-9])", replacement= "\\1\\2"))

df3 <- as.data.frame(data.matrix(df2))

但是,apply似乎将每一列转换为因素列表。我可以阻止apply这样做?

最佳答案

你可以使用这个:

sapply(df, function(v) {as.numeric(gsub("\\.","", as.character(v)))})

这给出:

        A       B    C
[1,] 1100 7800 200
[2,] 2300 500 3100
[3,] 5400 1000000 4500

这将为您提供一个matrix对象,但如果您愿意,您可以将其包装到data.frame()中。

请注意,原始数据中的列不是字符而是因子。

<小时/>

编辑:或者,您可以不使用 data.frame() 包装它,而是直接以 data.frame 形式获取结果:

# the as.character(.) is just in case it's loaded as a factor
df[] <- lapply(df, function(x) as.numeric(gsub("\\.", "", as.character(x))))

关于删除千位分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15833605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com