2016-08-12 52 views
0

我一般喜歡R,但類型轉換問題讓我發瘋。在R:混合數據類型的數據幀的類型轉換

以下問題:

我從數據庫連接中讀取數據幀。結果是一個包含字符列的數據框。

我知道第一列是日期格式 - 所有其他都是數字。但是,無論我如何將數據框的字符列轉換爲正確的類型,都無法解決問題。

將數據幀轉換爲矩陣然後返回到數據框中後,所有列都變爲類型因子 - 並將因子轉換爲數值創建錯誤結果,導致因子級別的索引被轉換而不是真實值。

此外,如果表大小很大 - 我不想手動轉換每列。沒有辦法讓它自動完成嗎?

+0

如果您通過'read.table'讀取表,則可以指定參數'colClasses',該參數應該是列的假定類的向量。有關更多信息,請參閱'read.table'。 – Vandenman

+0

這可能有助於這種情況。但它不會自動地轉換一列列。這是一種手動程序。 – CodingButStillAlive

回答

1

我們可以通過使用lapply循環遍歷數據集的列來使用type.convert。將列轉換爲character並應用type.convert。如果是character課程,它將轉換爲factor,我們可以將其重新轉換爲Date課程(因爲只有一列有character課程,不確定'Date'課程的格式,所以如果它是一種不同的格式,在as.Date中指定format參數)。

df1[] <- lapply(df1, function(x) {x1 <- type.convert(as.character(x)) 
         if(is.factor(x1)) 
          as.Date(x1) else x1}) 
+0

謝謝!這個程序實際上解決了這個問題。但是我想知道是否真的需要這樣的努力(定義你自己的函數並在字符和其他類型之間來回轉換) – CodingButStillAlive

+0

@ user1881788你可以使用'library(readr)'中的'read_csv',它應該自動選擇增加列類。 – akrun