11
在R中,是否有像read.csv
這樣的函數讀取文件頭部位於左側(或右側)而不是頂部,並且數據從左到右排列?讀取水平組織的CSV文件
所以數據會看起來像:
var1,1,2,3,4,5
看爲read.table
和read.csv
的文檔,似乎沒有任何彈出。我看到使用這些函數的最佳選擇是使用read.table
,然後構造另一個表,其列是原始數據的行等等。
在R中,是否有像read.csv
這樣的函數讀取文件頭部位於左側(或右側)而不是頂部,並且數據從左到右排列?讀取水平組織的CSV文件
所以數據會看起來像:
var1,1,2,3,4,5
看爲read.table
和read.csv
的文檔,似乎沒有任何彈出。我看到使用這些函數的最佳選擇是使用read.table
,然後構造另一個表,其列是原始數據的行等等。
比方說,你的文件被稱爲「data.csv」,它包含:
var1,1,2,3,4,5,6
var2,2.1,3.9,4.6,5.2,6.1
var3,M,F,M,F,M,M
注var1
和var3
有6個值,但var2
只有5 所以,這個想法是讀取數據,轉置它,然後使用read.csv
。
read.tcsv = function(file, header=TRUE, sep=",", ...) {
n = max(count.fields(file, sep=sep), na.rm=TRUE)
x = readLines(file)
.splitvar = function(x, sep, n) {
var = unlist(strsplit(x, split=sep))
length(var) = n
return(var)
}
x = do.call(cbind, lapply(x, .splitvar, sep=sep, n=n))
x = apply(x, 1, paste, collapse=sep)
out = read.csv(text=x, sep=sep, header=header, ...)
return(out)
}
然後,你可以這樣做:
read.tcsv( 「data.csv」)
var1 var2 var3
1 1 2.1 M
2 2 3.9 F
3 3 4.6 M
4 4 5.2 F
5 5 6.1 M
6 6 NA M
你能給的最小2或3線例子,說明你的文本數據看起來?你的意思是每條線就像:'var1,1,2,3,4,5'? – thelatemail
是的,就像那樣。所以在這種情況下,標題是最左邊一列。 –
*如果*所有變量都是數字,那麼您可以按照您的建議進行操作; 'x < - read.csv(...); y < - setNames(as.data.frame(t(x [, - 1])),as.character(x [,1]))' –