如何根据其他数字列中的值将列转换为总和?

时间:2019-12-12 20:06:05

标签: r

我有一个数据框架,旨在比较两年之间的机票。

df<-data.frame(year=c("1","2","1","2","1","2"),
           Daysleft=c(8,8,7,7,6,6),
           Count_TypeA=c(1,1,1,1,1,1),
           Count_TypeB=c(5,2,5,2,5,2))

在此示例数据框中,剩余天数表示距事件还有剩余天数。我想做的是得出累积计数,其中Daysleft> = Daysleft值,按年份分组。所需的输出如下:

desired<-data.frame(year=c("1","2","1","2","1","2"),
                Daysleft=c(8,8,7,7,6,6),
                Count_TypeA=c(1,1,2,2,3,3),
                Count_TypeB=c(5,2,10,4,15,6))

在我的实际数据中,有许多Count_Type变量,因此理想情况下,我希望得到一个答案,该答案可以避免使用它们的键入名称来命名所有列。

快速查看所需的输出:

  year Daysleft Count_TypeA Count_TypeB
    1        8           1           5
    2        8           1           2
    1        7           2          10
    2        7           2           4
    1        6           3          15
    2        6           3           6

我猜想dplyr的group_by()有一个技巧可能会有所帮助,但是对于类似问题(例如Using dplyr to get cumulative count by group)找到的答案对我来说还不清楚。

df2<-df %>%
   group_by(year)%>%

2 个答案:

答案 0 :(得分:1)

如果您需要独立处理每一列,则可以使用:

df %>% group_by(year) %>% mutate_at(vars(-year, -Daysleft),cumsum)

答案 1 :(得分:0)

我认为cumsum函数在这里起作用。

input_layer = ak.Input()
rnn_layer = ak.RNNBlock(layer_type="lstm")(input_layer)
dense_layer = ak.DenseBlock()(rnn_layer)
output_layer = ak.ClassificationHead(num_classes=2)(dense_layer)

automodel = ak.GraphAutoModel(input_layer, output_layer, max_trials=2, seed=123)
automodel.fit(x, y, validation_split=0.2, epochs=2, batch_size=32)