我有一個.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.
我有一個.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.
您可以控制R將如何解釋數據的類通過被讀入指定一個列類向量作爲參數read.table
與colClasses
。否則,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")
如果您不想在每次讀入/構建數據框時輸入stringsAsFactors = FALSE。您可以從一開始指定
options(stringsAsFactors=FALSE)
如果您提供了一個可重複使用的小例子,它對我們也有很大的幫助。 – 2011-04-02 05:11:26
您可能正在看到因素變量是如何在控制檯上打印的......這些級別並不是真正的值,而是可能值的向量。這些級別以上的行具有df [10,1]項的值。 – 2012-07-10 19:05:44