[英]Intelligent Way To Create Summary Table Without For Loop In R
下午好,
我有一個數據幀,如下所示,第一列中的時間戳記為POSIXlt,第二列中的數據值為:
Date Data
9/9/13 12:48 0.24
9/12/13 10:26 0.26
9/13/13 13:00 -0.14
9/17/13 11:31 -0.04
9/17/13 15:43 0.04
9/18/13 11:51 -0.04
9/18/13 14:35 -0.08
9/18/13 15:11 -0.08
9/19/13 10:12 -0.08
9/19/13 11:48 -0.16
我想按天總結如下所示的數據列:
Date Total For Day
9/9/13 0.24
9/12/13 0.26
9/13/13 -0.14
9/17/13 0
9/18/13 -0.20
9/19/13 -0.24
我最初的反應是創建一個for循環,如下所示:
在10中的9倍中,當我在R中執行for循環時,總是有一個命令或方法可以更輕松,更有效地執行此操作。
在這種情況下,有沒有比for循環更好的方法?
如果dat
是您的數據:
aggregate(dat$Data, list(as.Date(dat$Date)), sum)
## Group.1 x
## 1 2013-09-09 0.24
## 2 2013-09-12 0.26
## 3 2013-09-13 -0.14
## 4 2013-09-17 0.00
## 5 2013-09-18 -0.20
## 6 2013-09-19 -0.24
其他人的數據:
structure(list(Date = structure(list(sec = c(0, 0, 0, 0, 0, 0,
0, 0, 0, 0), min = c(48L, 26L, 0L, 31L, 43L, 51L, 35L, 11L, 12L,
48L), hour = c(12L, 10L, 13L, 11L, 15L, 11L, 14L, 15L, 10L, 11L
), mday = c(9L, 12L, 13L, 17L, 17L, 18L, 18L, 18L, 19L, 19L),
mon = c(8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L), year = c(113L,
113L, 113L, 113L, 113L, 113L, 113L, 113L, 113L, 113L), wday = c(1L,
4L, 5L, 2L, 2L, 3L, 3L, 3L, 4L, 4L), yday = c(251L, 254L,
255L, 259L, 259L, 260L, 260L, 260L, 261L, 261L), isdst = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("sec", "min",
"hour", "mday", "mon", "year", "wday", "yday", "isdst"), class = c("POSIXlt",
"POSIXt")), Data = c(0.24, 0.26, -0.14, -0.04, 0.04, -0.04, -0.08,
-0.08, -0.08, -0.16)), .Names = c("Date", "Data"), row.names = c(NA,
-10L), class = "data.frame")
或者:
使用ddply
:
require(plyr)
ddply(yourData, "Date", summarize, Total_for_day = sum(Data))
使用dplyr
:
require(dplyr)
yourData %.% group_by(Date) %.% summarize(Total_for_day = sum(Data))
或tapply
:
tapply(X = yourData$Data, INDEX = yourData$Date, FUN = sum)
我將使用dplyr
進行此類操作。 您的示例不可復制,我將使用內置的mtcars
數據集。 以下是每種獨特氣缸尺寸的每加侖平均英里數:
library(dplyr)
summarise(group_by(mtcars, cyl), mean_mpg = mean(mpg))
Source: local data frame [3 x 2]
cyl mean_mpg
1 8 15.10000
2 4 26.66364
3 6 19.74286
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.