我有一组数据,其中我存储在一行(观察)中的特定值的年度总计。我想整理R中的数据,以便使用一个简单的等式(总数/ 12)来分析每个月的总行数,该等式存储年度总数除以12行中的每一行12作为月总数。我试图在R中这样做,但我是初学者,不太确定从哪里开始。示例如下:
Date | Total
2015 | 12,000
Some R function to convert to:
Date | Total
01-01-2015 | 1,000
02-01-2015 | 1,000
03-01-2015 | 1,000
答案 0 :(得分:0)
这是一个多年的示例数据集,我认为这是您想要的用例:
public onSubmit():void{
this.companyServ.test().subscribe(data => {
console.log('Data', data);
}, err => {
console.error('Error', err);
});
}
然后,我将data.frame拆分为myData <-
data.frame(
Date = 2011:2015
, Total = (1:5)*1200
)
列(这假定年份是唯一的),循环使用Date
修改为您想要的月度值,然后将它们拼接回来与来自lapply
的{{1}}一起(还需要加载bind_rows
或dplyr
来管道(dplyr
)才能正常工作。
magrittr
给予(注意,使用%>%
表示跳过的行)
myData %>%
split(.$Date) %>%
lapply(function(x){
temp <- data.frame(
Date = as.Date(paste(x$Date
, formatC(1:12, width = 2, flag = "0")
, "01"
, sep = "-"))
, Total = x$Total / 12
)
}) %>%
bind_rows()
如果如评论中所建议的那样,你需要每年除以不同的月数,我会创建一个以年命名的除数的向量。在这里,我使用...
Date Total
1 2011-01-01 100
2 2011-02-01 100
3 2011-03-01 100
...
16 2012-04-01 200
17 2012-05-01 200
18 2012-06-01 200
...
29 2013-05-01 300
30 2013-06-01 300
31 2013-07-01 300
...
43 2014-07-01 400
44 2014-08-01 400
45 2014-09-01 400
...
58 2015-10-01 500
59 2015-11-01 500
60 2015-12-01 500
和dplyr
管道来简化常见案例的命名。然后,添加/更改不同年份的条目:
n_distinct
然后,您可以使用此向量代替上面的magrittr
。所以,替换这个:
toDivide <-
rep(12, n_distinct(myData$Date)) %>%
setNames(sort(unique(myData$Date)))
toDivide["2016"] <- 9
在12
循环中,使用:
Total = x$Total / 12
它应该除以那一年的条目,而不是总是除以相同的东西。