2015-10-15 133 views
3

假設我有一個樣本csv文件,它有3行4列。說它看上去像下面這樣:將fread函數讀入的數據轉換爲data.frame

name1 name2 name3 name4 
11 12  13 14 
21 22  23 24 
31 32  33 34 

我使用fread()讀它(我使用的用於說明目的的小樣本):

data <- fread(sample.csv, stringsAsFactors=FALSE) 

然後我做

class(data) 

它將返回

[1] "data.table" "data.frame" 

我想看第四列的第一個元素,我試圖

data[1,4] 

但它返回4(我想是列的索引)。

有趣的是,當我打電話以下

data[1,] 

data[1] 

返回的第一行。

所以我做

data <- data.frame(data) 

把數據轉換爲數據幀。

我的問題:
1.由於最初的數據有兩個類,有沒有辦法讓我選擇一個類而「放下」另一個類?就我而言,我只是想用數據作爲數據框。
2.一般來說,如果數據有多個類別,我們可以選擇一個類別來保存嗎?例如,as.POSIXct()將返回一個具有兩個類的對象(「POSIXct」「POSIXt」)。如果我們只想保留其中一個類,該怎麼辦?任何函數都可以以通用的方式用於此目的?

+3

你可以用'data.table = FALSE'在'FREAD()'常規數據幀。其他函數是'class < - ()','oldClass()','unclass()','help(class)'等。但是您可能不想從日期時間中刪除'POSIXt',因爲它可能會產生意想不到的後果 –

+0

很好解決。謝謝。 – Rwitch

+0

值得一提的是,'data [1,4]'將在未來的data.table迭代中表現得如您所期望的那樣。 – Frank

回答

0
data <- read.csv(sample.csv, stringsAsFactors=FALSE) 

使用read.csv()直接獲取csv作爲data.frame。

如果使用data[1,4],你應該14作爲輸出。