组合CSV文件并使用R将列拆分为2列

时间:2016-08-18 15:09:31

标签: r csv statistics

我有40个CSV文件,每个只有1列。我想将所有40个文件数据合并为1个包含2列的CSV文件。

数据格式如下:

Input data structure

我想space preserve the number format此列,并将所有40个CSV文件合并为1个文件。我也希望Negative

我尝试了以下代码,但数字格式未修复,并为 filenames <- list.files(path="C://R files", full.names=TRUE) merged <- data.frame(do.call("rbind", lapply(filenames, read.csv, header = FALSE))) data <- do.call("rbind", strsplit(as.character(trimws(merged$V1))," ",fixed=FALSE)) write.csv(data, "export1.csv", row.names=FALSE, na="NA") 数字添加了额外的第3列。不知道为什么。

我的代码:

get
我得到的输出如下所示。如果你观察到,负数将被放入额外的列。我只想按空格分割并按照输入中的确切数字格式放入2列。

Output file structure

R输出

enter image description here

1 个答案:

答案 0 :(得分:2)

问题是源数据是由以下分隔的:

  • 第二个数字为负数时的一个空格,
  • 当第二个数字为正数时,
  • 两个空格(缺少减号的空格)。

诀窍是将字符串拆分为一个 或更多 空格:

 data <- do.call("rbind", strsplit(as.character(trimws(merged$V1))," +",fixed=FALSE))

我在字符集,不可靠的文件等方面有点强迫症,所以我倾向于使用"[[:space:]]+"之类的分离器,因为它会捕获空格变体而不是空格" "或者标签"\t"

(在正则表达式中,+表示“一个或多个”。其他修饰符包括?为零或一,*为零或更多。)