我有一個數據幀,其中一列是日期時間(時鐘)。我想將這個數據幀分成僅由日期部分分割的數據幀列表。所以每個數據框都會包含當天的所有數據。我看了分裂函數,但不知道如何使用列值的一部分?在R我怎樣才能按日期拆分數據幀
回答
說你有這個data.frame
:
df <- data.frame(date=rep(seq.POSIXt(as.POSIXct("2010-01-01 15:26"), by="day", length.out=3), each=3), var=rnorm(9))
> df
date var
1 2010-01-01 15:26:00 -0.02814237
2 2010-01-01 15:26:00 -0.26924825
3 2010-01-01 15:26:00 -0.57968310
4 2010-01-02 15:26:00 0.88089757
5 2010-01-02 15:26:00 -0.79954092
6 2010-01-02 15:26:00 1.87145778
7 2010-01-03 15:26:00 0.93234835
8 2010-01-03 15:26:00 1.29130038
9 2010-01-03 15:26:00 -1.09841234
日益分裂,你只需要:
> split(df, as.Date(df$date))
$`2010-01-01`
date var
1 2010-01-01 15:26:00 -0.02814237
2 2010-01-01 15:26:00 -0.26924825
3 2010-01-01 15:26:00 -0.57968310
$`2010-01-02`
date var
4 2010-01-02 15:26:00 0.8808976
5 2010-01-02 15:26:00 -0.7995409
6 2010-01-02 15:26:00 1.8714578
$`2010-01-03`
date var
7 2010-01-03 15:26:00 0.9323484
8 2010-01-03 15:26:00 1.2913004
9 2010-01-03 15:26:00 -1.0984123
編輯:
上述方法是chron
DateTime對象太一致:
x <- chron(dates = "02/27/92", times = "22:29:56")
> x
[1] (02/27/92 22:29:56)
> as.Date(x)
[1] "1992-02-27"
EDIT 2
確保as.Date
不變化你的數據是至關重要的,在這裏看到:
# I'm using "DSTday" to make a sequece of one entire _apparent_ day
x <- rep(seq.POSIXt(as.POSIXct("2010-03-27 00:31"), by="DSTday", length.out=3))
> x
[1] "2010-03-27 00:31:00 GMT" "2010-03-28 00:31:00 GMT" "2010-03-29 00:31:00 BST"
> as.Date(x)
[1] "2010-03-27" "2010-03-28" "2010-03-28"
第三項是在夏天的時候和as.Date
檢索實際天,即減去一個小時。爲了避免這種情況:
> as.Date(cut(x, "DSTday"))
[1] "2010-03-27" "2010-03-28" "2010-03-29"
訣竅是創建一個向量,告訴R如何分割數據。因此,在您的例子中,我們有一個數據幀:
dd = data.frame(x = runif(100),data= paste0(1:4, "/05/13"))
##This step will depend on your data structure
dd$date = strptime(dd$data, "%d/%m/%y")
請注意,我做了日期列有POSIXlt
類`POSIXt`。這可以輕鬆地操作日期。
接下來,我將創建我要拆分的變量 - split_date
。基本上,我用的秒數一天減去所有其他日期和鴻溝最小日期:
split_date = (dd$date -min(dd$date))/86400
因爲這將導致分數,我會四捨五入到最近的一天:
split_date = floor(split_date)
現在我用的split
功能以標準方式:
split_by_day = split(dd, split_date)
謝謝你,希望你可以傳遞一個函數到split得到日期部分,因爲它分裂,但我猜不是。 – Mark
我認爲'strptime(dd $ data,「%d /%m /%Y」)'應該是'strptime(dd $ data,「%d /%m /%y」) – Michele
@Michele謝謝 – csgillespie
- 1. 我怎樣才能按日期劃分分組數據
- 2. 按日期拆分R中的數據幀
- 3. 我怎樣才能出生日期的日期從年齡數
- 4. 我怎樣才能使數據排序按日期在SQL填充表?
- 5. 我怎樣才能把數據幀數據到垃圾箱
- 6. 基於日期拆分數據幀
- 7. 我怎樣才能在空場統計數據幀
- 8. 我怎樣才能找到在R
- 9. 我怎樣才能按天分組,並且還能返回日期?
- 10. 我怎樣才能使一個函數來保存數據幀
- 11. 我怎樣才能鉤入802.15.4幀流?
- 12. MS Access:我怎樣才能把最大的日期分組?
- 13. 我怎樣才能拆分「,」即使它有一個「,」在其中
- 14. 我怎樣才能在PHP(日/月)比較日期
- 15. 我怎樣才能得到在透視日的日期?
- 16. 按列拆分數據幀
- 17. 我怎樣才能按分隔符分割數組
- 18. 我怎樣才能獲得R中
- 19. 我怎樣才能在分頁CFSCRIPT
- 20. 與日期R數據幀
- 21. 我怎樣才能從數據庫
- 22. 我怎樣才能json數據jquery
- 23. 我怎樣才能訪問StackOverflow數據?
- 24. 我怎樣才能
- 25. 我怎樣才能
- 26. 我怎樣才能
- 27. 我怎樣才能
- 28. 我怎樣才能在R中做矢量積分?
- 29. 我怎樣才能拆分字符串並保留空格呢?
- 30. 我怎樣才能拆分這個字符串
我有儘管日期時間,我需要保留時間信息。 – Mark
@Mark只是使用'as.Date',或者你可以發佈一個樣本來實際運行代碼,所以你會看到我的方法工作... – Michele
@Mark和現在? :-) – Michele