Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 数据按摩以获得所需数据_R - Fatal编程技术网

R 数据按摩以获得所需数据

R 数据按摩以获得所需数据,r,R,我的数据文件包含每月的成本。这些成本与某些成本桶有关。我试图过滤该列中的一些成本,为一个成本区间筛选多个条目,并对该成本区间的月度成本进行合计。然后,我必须将这些成本加总到另一个成本桶中 e、 g.SWB、培训等的多个条目需要按月汇总这些多个值,然后将其汇总到另一个成本桶(例如人员)中 代码如下: list <- c("SWB", "Travel", "Training", "Relocation", "Contract Labor") > for(i in seq_along(li

我的数据文件包含每月的成本。这些成本与某些成本桶有关。我试图过滤该列中的一些成本,为一个成本区间筛选多个条目,并对该成本区间的月度成本进行合计。然后,我必须将这些成本加总到另一个成本桶中

e、 g.SWB、培训等的多个条目需要按月汇总这些多个值,然后将其汇总到另一个成本桶(例如人员)中

代码如下:

list <- c("SWB", "Travel", "Training", "Relocation", "Contract Labor")
> for(i in seq_along(list))
+ {
+ temp <- dump %>% select(Line.Item.L1, Jan:Aug) %>% filter(Line.Item.L1 == a[[i]])
+ temp %>% select(Jan:Aug) %>% colSums(na.rm=TRUE) -> a[[i]]
+ }
它给出了一个错误:

列表[[i]]%selectJan:Aug%>%colSumsna.rm=TRUE时出错: 提供的元件比需要更换的元件多

然后,我使用:

 d <- data.frame(a=rep(1,10), b=rep(1,10), c=rep(1,10), d=rep(1,10), e=rep(1,10))
> for(i in seq_along(list))
+ {
+ j=1
+ d[j,] = c(a,b,c,d,e)
+ temp <- dump %>% select(Line.Item.L1, Jan:Dec) %>% filter(Line.Item.L1 == list[[i]])
+ temp %>% select(Jan:Dec) %>% colSums(na.rm=TRUE) -> d[j,]
+ j=j+1
+ }
这表明a:e未定义


请帮我写这段代码

为什么不使用“从tidyr收集”将月份列收集到一个名为“月份”的列中,然后按它们分组来计算总和

您的新桶示例有点模糊,但您可以这样做:

list %>%
   mutate(new_bucket = ifelse(Line.Item.L1 == bucket_value,'bucket1','bucket2') %>%
   gather(key = month, value = cost, Jan:Aug) %>%
   group_by(new_bucket,month) %>%
   summarize(total_costs = sum(cost)

无论如何,如果需要,我会在单独的列中首先分配新的存储桶,在for循环中进行分配,然后快速计算剩余的存储桶。

请在您的问题中包含您的数据样本-使用dputI。我实际上希望按月计算成本。我想分析各种成本的趋势和季节性。我想做的是:我有不同的成本,比如SWB、旅行、培训等,我想把这些成本加入另一个叫做“人员”的头脑中。每个成本区间有多个分录,即SWB单独有多个分录。首先,我必须每月汇总所有这些成本,然后将它们与其他桶的成本相加,这些成本将反映在人员每月的成本下。对,最简单的方法就是我所概述的方法。您需要将单独的每月列收集到一个月列中,然后将其用作按月汇总成本的基础。如果我正确理解了您的原始帖子,那么您的数据集将被组织成9列:一个行项目成本ID列字符串和八个月成本列整数。对吗?如果您有一个包含行项目成本和存储桶SWB、培训等的密钥,那么您可以在收集月份后将其加入数据框。然后在组中使用它。列表%>%gatherkey=month,value=cost,Jan:Aug%>%left\u joinbucket\u key,by='line\u item\u id'>%group\u bybucket\u id,month%>%summaryTotal\u costs=sumcost%>%ungroup这样的东西会给你每月按bucket汇总的成本。