1

そのため、データを次の形式の csv ファイルとして出力するソフトウェアを使用しています。

# Parameter 1
ID,Col1,Col2,Col3
1,a,b,c
2,d,e,f
3,g,h,i
[...]
j,x,y,z

# Parameter 2
ID,Col1,Col2,Col3
1,a,b,c
2,d,e,f
3,g,h,i
[...]
k,x,y,z

# Parameter 3
ID,Col1,Col2,Col3
1,a,b,c
2,d,e,f
3,g,h,i
[...]
n,x,y,z

パラメータ 1 の 10 行目を読み取る必要がある場合は、 を使用しますread.csv('file.csv', header=FALSE, skip=10, nrows=1)。これにより、必要なものが得られます。ただし、パラメーター 2 の 10 番目の観測まで読み込もうとすると、パラメーター 1 の観測の数が可変であるため、どの整数をスキップして割り当てればよいかわかりません。この問題は、行がわかれば解決できます。文字列に一致する数値"# Parameter 2"。どうすればいいですか?

4

2 に答える 2

4

使用できますreadLines

# Assuming that what indicates the
#  start of param2 is the follwing line
param2.indic <- "# Parameter 2"


# read in the raw file
lines <- readLines("path\to\file.csv")

# find the start of parameter 2
p2.start <- grep(param2.indic, lines)

# go down n+2 lines from p2.start
n <- 10  # which line to find
lines[p2.start + n + 2]
于 2013-09-25T19:29:00.450 に答える
0

一致する行に到達するまで行を読み込んでから、そこから開始できます。

例:一致するまでセリフを読みます。この場合、ファイルにはスキップする必要がある長い複数行のヘッダーがあり、その後に通常のスプレッドシート スタイルの csv が続きます。最初の要素として「Sample_ID」で始まることがわかっているヘッダー行を探しています。

csvreader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in csvreader:
    if row[0].strip() == 'Sample_ID':
        header = row
        break

行をヘッダー行までキューに入れたので、ファイルの残りの部分を好きなように処理できます。

sample_ids = []
for row in csvreader:
    sample_ids.append(row[0])
于 2014-11-03T05:20:10.033 に答える