2015-08-13 62 views
0

我有一個zip文件,其中包含.txt文檔。我想在R中解壓文件並將文本文檔轉換爲.csv,以便我可以使用它進行進一步分析。如何讀取R中的zip文件並迭代每個.txt文件以將其轉換爲.cvs?

轉換時可以提供標題名稱嗎?

此外,我還想通過編寫一個函數來讀取每個上面轉換的.csv文件並從數據生成基本圖形來迭代該過程。在R中這樣做是否可行?

例如,我們可以將zip文件名稱視爲具有5個文本文件(1.txt,2.txt,3.txt,4.txt,5.txt)的'data.zip'。每個文本文件在IP,日期和時間的單行上都有日誌信息。

111.999.88.80 - - [27/Mar/2017:00:03:16 -0600] "HEAD/HTTP/1.1" 

您的回答將會非常有幫助。 在此先感謝!

+0

爲什麼還要把它們轉換成csv文件?爲什麼不讀取.txt文件並進行分析? – Benjamin

+0

嗯,我有這個想法,但我不知道如何使用沒有標題的數據,因爲我以前沒有處理過文本文件。 甚至如果我這樣做,我想知道我是否可以迭代閱讀文件和繪製圖形的過程? – Nahush

+2

我可以給你沒有示例zip文件的最佳答案是「是」。爲了讓你開始,看看'unzip'函數來解壓文件,使用'list.files'來獲取文件名,然後使用'read.table'來讀取每個文件。您可以使用'header = FALSE'參數來讀入沒有列名稱的數據。你需要使用'names'函數添加你自己的列名(或者至少我推薦它)。將所有這些綁定到'for'循環或'apply'函數,並且您可以迭代zip文件夾中的所有文件。 – Benjamin

回答

1

我創建了一個可重現的樣本。

並認爲這可能會解決您的問題。

你可以下載我從here創建的樣本zip文件。

附件是完整的代碼。

## Clean Memory 
rm(list=ls()) 

## Set path for your working location 
setwd("D:/blah") 

## unzipped it the file 
unzip("D:/blah/text.zip") 

## Check file in the zipped file 
list.files() 

## Read the file 
temp = list.files(pattern="*.txt") 

這裏有一些選項。我想你想要的是第二個將樣本中的兩個文件合併成一個文件。

## Read the file as list 
myfiles= lapply(temp, read.delim) 
## Read the file all together 
myfiles = do.call("rbind", lapply(temp, function(x) read.table(x, stringsAsFactors = FALSE,header = TRUE))) 

確保根據需要調整標題設置。 好的,祝你好運。

相關問題