簡體   English   中英

如何將包含多個部分的CSV文件導入R?

[英]How to Import a CSV file containing multiple sections into R?

我想將csv文件的內容導入R,csv文件垂直包含多個數據部分,用空行和星號分隔。 例如

********************************************************
* SAMPLE DATA ******************************************
********************************************************
Name, DOB, Sex
Rod, 1/1/1970, M
Jane, 5/7/1980, F
Freddy, 9.12,1965, M

*******************************************************
*  Income Data ****************************************
*******************************************************
Name, Income
Rod, 10000
Jane, 15000
Freddy, 7500

我想將它作為兩個單獨的數據幀導入R中。 目前我手動將csv文件切割成較小的文件,但我想我可以使用read.csv和read.csv的skip和nrows設置來做,如果我可以解決secion斷開的地方。

這給了我每個空行的邏輯TRUE

ifelse(readLines("DATA.csv")=="",TRUE,FALSE)

我希望有人已經解決了這個問題。

在這種情況下,我會做類似的事情:

# Import raw data:
data_raw <- readLines("test.txt")

# find separation line:
id_sep <- which(data_raw=="")

# create ranges of both data sets:
data_1_range <- 4:(id_sep-1)
data_2_range <- (id_sep+4):length(data_raw)

# using ranges and row data import it:
data_1 <- read.csv(textConnection(data_raw[data_1_range]))
data_2 <- read.csv(textConnection(data_raw[data_2_range]))

實際上你的第一個示例集具有不一致的結構,因此data_1看起來很奇怪。

也許這個未經測試的片段可能會有所幫助:

reader <- file("DATA.CSV", "r")
lines <- readLines(reader)
writer1 <- textConnection("csv1", open = "w", local = TRUE)
writer2 <- textConnection("csv2", open = "w", local = TRUE)
currWriter <- writer1
lastLine <- length(lines)
lineNumber <- 4
repeat {
    if (lineNumber>lastLine) break
    if (lines[lineNumber]=="********************************************************") {
        lineNumber <- lineNumber + 2 # eat two lines
        currWriter <- writer2
    } else {
        writeLines(line, currWriter)
    }
    lineNumber <- lineNumber + 1
}
close(reader)
close(writer1)
close(writer2)
csv1Reader <- textConnection(csv1, "r")
csv2Reader <- textConnection(csv2, "r")
df1 <- read.csv(csv1Reader)
df2 <- read.csv(csv2Reader)
close(csv1Reader)
close(csv2Reader)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM