说,我有数据集。
structure(list(SKU = c(13284L, 13284L, 13284L, 13284L, 13284L,
13284L, 13284L, 13284L, 13284L, 13284L, 13284L), stuff = c(4565,
0, 0, 0, 567.0065222, 0, -1, 73.82897425, -1, 567.0065222, 614.2570658
), action = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L), acnumber = c(329L,
329L, 329L, 329L, 329L, 329L, 329L, 329L, 329L, 329L, 329L),
year = c(2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L,
2018L, 2018L, 2018L, 2018L)), .Names = c("SKU", "stuff",
"action", "acnumber", "year"), class = "data.frame", row.names = c(NA,
-11L))
操作列只有两个值0和1。 我们可以看到1个类别的东西有1个观察,0个类别的东西有10个观察。
1.我必须计算最后三次观察的中位数,但不需要在Stuff列中小于或等于零。所以我必须与最后三个人合作。 0个动作类别的colums of colums。
567,0065222
73,8289742
567,0065222
the median =567,0065
现在,我必须取一个1行动类别的值并从中减去计算出的中位数
614,2570658-567,0065222 = 47,2505436
我这样做
AwesomeData %>% {.[.$stuff>0,]} %>% {.[.$action==0,]} %>% tail(3) %>% {median(.$stuff)} -> OURMEDIANA
AwesomeData %>% {.[.$action==1,]} %>% {.$stuff}-OURMEDIANA -> WHATWENEED
a=cbind(AwesomeData,WHATWENEED)
但如果我有两个小组怎么办? 有人喜欢那个
structure(list(SKU = c(13284L, 13284L, 13284L, 13284L, 13284L,
13284L, 13284L, 13284L, 13284L, 13284L, 13284L, 13285L, 13285L,
13285L, 13285L, 13285L, 13285L, 13285L, 13285L, 13285L, 13285L,
13285L), stuff = c(4565, 0, 0, 0, 567.00652, 0, -1, 73.82897,
-1, 567.00652, 614.25707, 4565, 0, 0, 0, 567.00652, 0, -1, 73.82897,
-1, 567.00652, 614.25707), action = c(0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L
), acnumber = c(329L, 329L, 329L, 329L, 329L, 329L, 329L, 329L,
329L, 329L, 329L, 330L, 330L, 330L, 330L, 330L, 330L, 330L, 330L,
330L, 330L, 330L), year = c(2018L, 2018L, 2018L, 2018L, 2018L,
2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2017L, 2017L, 2017L,
2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L, 2017L)), .Names = c("SKU",
"stuff", "action", "acnumber", "year"), class = "data.frame", row.names = c(NA,
-22L))
现在我们有了新的小组
SKU +acnumber+year
13285+330+2017
如何将此字符串用于数据集中的所有组
作为输出我看到了
SKU stuff action acnumber year new
<int> <dbl> <int> <int> <int> <dbl>
1 13284 4565 0 329 2018 3998
2 13284 0 0 329 2018 - 567
3 13284 0 0 329 2018 - 567
4 13284 0 0 329 2018 - 567
5 13284 567 0 329 2018 0
6 13284 0 0 329 2018 - 567
7 13284 - 1.00 0 329 2018 - 568
8 13284 73.8 0 329 2018 - 493
9 13284 - 1.00 0 329 2018 - 568
10 13284 567 0 329 2018 0
但我必须看到
SKU acnumber year result
13284 329 2018 47,25055
13285 330 2017 47,25055 614,25707-median of three last obs. Of zero (567,00652)
答案 0 :(得分:1)
我们可以通过'SKU','acnumber','year'进行分组,对stuff
的最后3个观察进行子集,其中'action'为0且'stuff'为正,取{{1并且从最后的“东西”观察中减去'动作'为1
median