0

我在读取包含奇怪格式数字的 CSV 文件时遇到问题。我想将该值作为数字读入 R。

我通常使用 read.csv 将 CSV 文件读取到 DF 中。

问题是其中一列将该值作为因子变量读取。

示例:CSV 文件:

713,78-;713,78;577,41-;577,41;123,82-;123,82 

在我将其读入数据框后,结果是:

[1] 713,78- 713,78  577,41- 577,41  123,82- 123,82 
6 Levels: 713,78- 713,78  577,41- 577,41  123,82- 123,82  

在上面说明的情况下,我想要以下输出:

[1] -713.78  713.78 -577.41  577.41 -123.82  123.82

其中列号将是数字类。

4

2 回答 2

4

它应该一般工作:

fixData <- function(x)
{
  x <- gsub(',', '.', x)
  x[grep('-$', x)] <- paste0('-', x[grep('-$', x)])
  x <- as.numeric(sub('-$', '', x))
  return(x)
}
myData <- read.csv2(file, stringsAsFactors = F)
fixedData <- sapply(myData , fixData )
于 2015-09-15T19:53:17.097 回答
1

这是一种丑陋的数字格式。

这应该让它达到你想要的样子。

x <- factor(c("713,78-", "713,78", "577,41-", "577,41", "123,82-", "123,82"))

scalar <- ifelse(grepl("-", x), -1, 1)
x <- as.character(x)
x <- gsub(",", ".", x)
x <- gsub("-", "", x)
x <- as.numeric(x) * scalar
于 2015-09-15T19:35:54.530 回答