[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
我有一组资料,如下图左。
每个Product跟Sku会进行N次测试,但我只想要留都成功的组合。
如Product1 & M,测试了3次,但我只想要留Product1 M 2022/10/25 23:18这笔。
而Product2 & S,最后一笔的Result1 & Result2有NG的状况,
所以我要借用前一个OK的那笔。
最后整理结果如下图右。
我目前的想法不是用group_by,而是从for 循环去逐row看是否NG,
如果NG再看下一row是否为同一product和sku,
如果是的话,便将下一row的值贴上此row。
但不知道有没有比较好的做法。
https://imgur.com/z7FPje9
===============================================================
简单来说我想要组合同一个product & sku下的结果,
如前所述的product2 & S,11:58的result 3 & 4有OK,所以要保留,
但result 1&2的NG就要取用9:48的结果。
我一开始也想尝试用group_by,
但是group_by(product, sku)后,
我目前仅会列出根据时间的最后一笔(arrange后summarise_all(last)),
而不知道怎么把group_by后的结果作上述的组合动作。
[环境叙述]:
Windows
R-4.0.3
[关键字]:
dplyr
summarise
row
看起来可以拆分两部分作业, 在每组product, sku找出一个符合你要求的date, 再找出result1-4的适合值, 最后再merge起来第一部份, 先把ok/ng转换成1/0,逐row加起来(ok_cnt),每组product,sku依ok_cnt大至小排序, date早到晚排序, 再取出每组第一个row, 就会是所求的date第二部分, 每组product, sku找出max(result1)到max(result4)最后用product,sku作为key去merge两个部分, 应该就是你要的结果, btw我前面的date排序好像讲反了