Я хочу создать новый набор данных из существующего, удалив строки из переменной во фрейме данных, которые имеют 0 в качестве последних значений для каждого уровня другой переменной. Пример:
set.seed(100)
ID<-rep(1:20, each=5)
ID
var1<-sample(c(0, 1,2, 3), size = 100, replace = TRUE, prob = c(0.6,0.1, 0.1, 0.1))
var1
df <- data.frame(ID,var1)
head(df,15)
ID var1
1 1 0
2 1 3
3 1 0
4 1 3
5 1 1
6 2 0
7 2 0
8 2 1
9 2 0
10 2 0
11 3 1
12 3 0
13 3 2
14 3 0
15 3 0
Переменная «ID» имеет 20 уровней, для каждого уровня идентификатора я хочу удалить строки из фрейма данных, заканчивающиеся на 0. Например, последняя строка идентификатора 1 в строке 5 имеет значение 1, поэтому следует сохранить. Мы видим, что идентификаторы 2 и 3 имеют 0 в строках 9, 10 и 14, 15 для var1 и поэтому должны быть удалены. Если мы посмотрим на идентификатор 16, он имеет все 0 для var1 и должен быть полностью удален из нового фрейма данных. Так что просто для пояснения, 0 в var1 - это хорошо, если они не являются последними значениями для каждого уровня идентификатора, если они есть, строки, содержащие их, должны быть удалены независимо от того, сколько строк мы говорим. Новый фрейм данных должен выглядеть следующим образом.
ID var1
1 1 0
2 1 3
3 1 0
4 1 3
5 1 1
6 2 0
7 2 0
8 2 1
9 3 1
10 3 0
11 3 2