【发布时间】:2013-04-05 12:09:38
【问题描述】:
我导入了一个 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")
我现在想将这些chars 转换为numeric 甚至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 这样做吗?
【问题讨论】:
-
如果问题是值包含货币,那么该问题也已使用
read.*函数在数据输入级别解决:stackoverflow.com/questions/10823241/… -
查看这些问题的答案和此处提供的解决方案(我会接受其中一个 - 我使用了我自己发布的那个,但@juba 的解决方案似乎也有效),我认为它是不是重复的...
-
要解决的问题是不是他的答案是否重复,而是问题是否重复。您应该在发布问题之前进行更多搜索。
-
我在发帖前找到了stackoverflow.com/questions/2347410/…:OP想要删除一个逗号,我想删除一个dot,我也无法将此线程中的答案翻译成我的问题。我之前没有找到stackoverflow.com/questions/10823241/…,但这解决了一个完全不同的问题。我在发布之前做了很多搜索(信不信由你)。
标签: r excel decimal apply separator