2011-04-02 72 views
0

我有一個.csv文件,我已經讀入R中作爲數據幀(比如說df)。 第一列是以mm/dd/yyyy格式顯示的日期。第二列是雙數字。我想要做的是創建一個新的數據幀,如:R中的數據幀使用情況

df2<-data.frame(date=c(df[10,1],df[15,2]),num=c(111,222)) 

當我嘗試做到這一點時,我得到非常混亂的df2。很可能我做錯了,因爲我不明白數據框架的概念。

每當我試着做df[10,1],輸出的是第10行的df第一列,包括列的所有級別1.

+0

如果您提供了一個可重複使用的小例子,它對我們也有很大的幫助。 – 2011-04-02 05:11:26

+0

您可能正在看到因素變量是如何在控制檯上打印的......這些級別並不是真正的值,而是可能值的向量。這些級別以上的行具有df [10,1]項的值。 – 2012-07-10 19:05:44

回答

2

您可以控制R將如何解釋數據的類通過被讀入指定一個列類向量作爲參數read.tablecolClasses。否則,R將使用type.convert,根據R的邏輯定義,它將以「邏輯」方式轉換字符向量。如果你不熟悉它們,那顯然有一些潛在的怪癖。

您還可以通過在read.table中指定stringsAsFactors = FALSE作爲參數來防止R創建因子,這通常比指定所有colClasses更容易。

您可以使用strptime()來格式化日期。考慮到所有這些因素,我建議您將數據讀入R,而無需將字符數據轉換爲因子,然後使用strptime進行格式化。

df <- read.csv("myFile.csv", stringsAsFactors = FALSE) 
#Convert time to proper time format 
df$time <- strptime(df$time, "%m/%d/%Y") 
0

如果您不想在每次讀入/構建數據框時輸入stringsAsFactors = FALSE。您可以從一開始指定

options(stringsAsFactors=FALSE)