2016-08-18 49 views
1

2列我有40個CSV文件與每個僅1列。我想將所有40個文件數據合併成1個CSV文件,並帶有2列。結合CSV文件和分裂塔送入,使用R

數據格式是這樣的:

Input data structure

我想splitspace此列所有40個CSV文件合併成1個文件。我也想要preserve the number format

我想下面的代碼,但數字格式不固定,和額外的第三列添加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") 

牛逼他輸出我得到如下圖所示。如果您觀察,則負數將放入額外的列中。我只是想按空格分割,並按照輸入中的數字格式輸入2列。

Output file structure

R輸出

enter image description here

+0

我沒有downvote你,但我覺得你問題可能出在Excel上,而不是用你的R代碼。 –

+0

謝謝@Tim。數字格式可能與Excel相關,但不確定是否分爲3列。分割由R完成。我驗證了輸入數據,它沒有任何額外的空格。我認爲我的程序在分裂時做錯了。 – Venky

+0

@Xizam更新我有R輸出的問題。謝謝。 – Venky

回答

2

的問題是,在源數據由分隔:

  • 一個空間時,所述第二數量是負的,並
  • 兩個空格當t他的第二個數字是正數(空缺爲負號)。

訣竅是分割字符串的一個以上空間:

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

我對字符集,不可靠的文件等有點強迫症,所以我傾向於使用分離器如"[[:space:]]+"代替,因爲它會趕上空白變體,而不是空間" "或標籤"\t"

(在正則表達式的發言中,+說:「一個或多個」。其他的改性劑包括?爲0或1,和*作爲零個或多個)。