我想删除每个产品组出现的初始连续NA(仅适用于销售和价格),直到每个产品组出现第一个非NA值。
S.No,Product,Date,Sales,Price,Count
1,Product1,1/1/2018,NA,NA,7
2,Product1,2/1/2018,NA,NA,6
3,Product1,3/4/2018,5,1,7
4,Product1,4/4/2018,NA,NA,3
5,Product1,5/5/2018,3,1,6
6,Product1,6/5/2018,2,4,10
7,Product1,7/6/2018,5,9,5
8,Product2,1/1/2018,NA,NA,6
9,Product2,2/1/2018,10,3,5
10,Product2,3/4/2018,NA,NA,2
11,Product2,4/4/2018,8,3,8
12,Product2,5/5/2018,3,6,7
13,Product2,6/5/2018,7,4,6
14,Product2,7/6/2018,10,3,3
15,Product3,2/1/2018,NA,NA,7
16,Product3,3/4/2018,NA,NA,2
17,Product3,4/4/2018,NA,NA,1
18,Product3,5/5/2018,NA,NA,7
19,Product3,6/5/2018,10,7,9
20,Product3,7/6/2018,6,3,7
下面是我要提取的输出。
S.No,Product,Date,Sales,Price,Count
3,Product1,3/4/2018,5,1,7
4,Product1,4/4/2018,NA,NA,3
5,Product1,5/5/2018,3,1,6
6,Product1,6/5/2018,2,4,10
7,Product1,7/6/2018,5,9,5
9,Product2,2/1/2018,10,3,5
10,Product2,3/4/2018,NA,NA,2
11,Product2,4/4/2018,8,3,8
12,Product2,5/5/2018,3,6,7
13,Product2,6/5/2018,7,4,6
14,Product2,7/6/2018,10,3,3
19,Product3,6/5/2018,10,7,9
20,Product3,7/6/2018,6,3,7
如果有人可以帮助我解决该问题,将不胜感激。 R中是否有任何程序包或函数可以解决这种情况。
任何线索都将受到高度赞赏。
谢谢, J
答案 0 :(得分:2)
dat%>%
group_by(Product)%>%
filter_at(vars(4:5),all_vars(cumsum(!is.na(.))))
# A tibble: 13 x 6
# Groups: Product [3]
S.No Product Date Sales Price Count
<int> <fct> <fct> <int> <int> <int>
1 3 Product1 3/4/2018 5 1 7
2 4 Product1 4/4/2018 NA NA 3
3 5 Product1 5/5/2018 3 1 6
4 6 Product1 6/5/2018 2 4 10
5 7 Product1 7/6/2018 5 9 5
6 9 Product2 2/1/2018 10 3 5
7 10 Product2 3/4/2018 NA NA 2
8 11 Product2 4/4/2018 8 3 8
9 12 Product2 5/5/2018 3 6 7
10 13 Product2 6/5/2018 7 4 6
11 14 Product2 7/6/2018 10 3 3
12 19 Product3 6/5/2018 10 7 9
13 20 Product3 7/6/2018 6 3 7