Предположим, у меня есть этот набор данныхУдалить определенные строки в группе строк в R
Id Name Price sales Profit Month Category Mode Supplier
1 A 2 0 0 1 X K John
1 A 2 0 0 2 X K John
1 A 2 5 8 3 X K John
1 A 2 5 8 4 X L Sam
2 B 2 3 4 1 X L Sam
2 B 2 0 0 2 X L Sam
2 B 2 0 0 3 X M John
2 B 2 0 0 4 X L John
3 C 2 0 0 1 X K John
3 C 2 8 10 2 Y M John
3 C 2 8 10 3 Y K John
3 C 2 0 0 4 Y K John
5 E 2 0 0 1 Y M Sam
5 E 2 5 5 2 Y L Sam
5 E 2 5 9 3 Y M Sam
5 E 2 0 0 4 Z M Kyle
5 E 2 5 8 5 Z L Kyle
5 E 2 5 8 6 Z M Kyle
Я хочу, чтобы удалить строки с нулями для Sales
и Profit
колонки Id
группы Таким образом, для определенного Id
, если два или более последовательные строки имеют нулевые значения для sales
и profit
, эти строки будут удалены. Таким образом, этот набор данных станет таким.
Id Name Price sales Profit Month Category Mode Supplier
1 A 2 5 8 3 X K John
1 A 2 5 8 4 X L Sam
2 B 2 3 4 1 X L Sam
3 C 2 0 0 1 X K John
3 C 2 8 10 2 Y M John
3 C 2 8 10 3 Y K John
3 C 2 0 0 4 Y K John
5 E 2 0 0 1 Y M Sam
5 E 2 5 5 2 Y L Sam
5 E 2 5 9 3 Y M Sam
5 E 2 0 0 4 Z M Kyle
5 E 2 5 8 5 Z L Kyle
5 E 2 5 8 6 Z M Kyle
можно удалить все строки, если они имеют нулевые значения для Sales
и Profit
с
df1 = df[!(df$sales==0 & test$Profit==0),]
Но как удалять строки только в определенной группе в этом случае Id
PS Идея заключается в удалении записей для этих продуктов, если они начали продаваться через несколько месяцев или были оставлены после нескольких месяцев в течение года.
Напишите простую функцию, которая выполняет удаление и включает/исключает группы, которые вы хотите. Затем используйте любой из 'lapply'' 'for' loop,' data.table' или '(d) plyr' to split-apply-comb –