在不引入Xn的情况下,无法将数据帧拆分为保持顺序的相等存储桶。字首

时间:2017-09-10 18:04:25

标签: r

我正在尝试将有序数据帧拆分为10个相等的存储桶。以下工作但它引入了X1。,X2。,X3。 ...每个桶的前缀,这阻止我迭代桶以对它们求和。

num_dfs <- 10
buckets<-split(df, rep(1:num_dfs, each = round(nrow(df) / num_dfs)))

产生一个看起来像的df [10]:

$`10`
       predicted_duration actual_duration
177188         23.7402944               6
466561         23.7402663              12
479556         23.7401721               5
147585         23.7401666              48

这是我用来尝试对组进行求和的原始代码。

for (i in c(1,2,3,4,5,6,7,8,9,10)){
  p<-sum(as.data.frame(df[i],row.names=NULL)$X1.actual_duration) # X1., X2.,
  print(paste(i,"=",p))
}

如何删除Xn.分组前缀或使用索引i以编程方式引用它?

这是一个类似的可重复的例子:

df<-data.frame(actual_duration=sample(100))
num_dfs <- 10
df_grouped<-as.data.frame(split(df, rep(1:num_dfs, each = round(nrow(df) / num_dfs))))

for (i in c(1,2,3,4,5,6,7,8,9,10)){
  p<-sum(df[i]$actual_duration) # does not work because postfix .1, .2.. was added by R
  print(paste(p))
}

1 个答案:

答案 0 :(得分:1)

我不清楚你的问题是什么,但如果你只是试图通过小组获得总和,你就不能使用

 library(tidyverse)

df <- data.frame(actual_duration=sample(100))

 df %>% 
   arrange(actual_duration) %>% 
   mutate(group = rep(1:10, each = 10)) %>% 
   group_by(group) %>% 
   summarise(sums = sum(actual_duration))

或者,如果你想保持列表格式

df %>% 
  arrange(actual_duration) %>% 
  mutate(group = factor(rep(1:10, each = 10))) %>% 
  split(., .$group)  %>% 
  map(., function(x) sum(x$actual_duration))