В общем, я знаю, как удалить строки в R. Однако для этого конкретного требования я не уверен, как действовать. Вот идея о том, что мне нужно делать с данными:Удалить определенные строки в R
ID MONTH INCOME
1. 00000012 6 60
2. 00000012 8 65
3. 00000015 12 70
4. 00000025 4 45
5. 00000025 8 60
6. 00000032 6 10
7. 00000035 6 30
Краткое описание каждой колонки:
Первые 7 цифр ID идентификации агента. Таким образом, в первой строке 00000012 означает агент 1. Последняя цифра - номер интервью. Таким образом, в третьем ряду 00000015 означает агент 1, интервью 5.
Месяц и доход просты.
Что должно быть сделано
нужно удалить каждый идентификатор, который не включает в себя как на 2-й и 5-й интервью.
Мне нужно иметь только макс. месяц для второго собеседования и 5-е интервью для каждого удостоверения личности.
Так что, если я очистил данные правильно, я бы:
ID MONTH INCOME
2. 00000012 8 65
3. 00000015 12 70
6. 00000032 6 10
7. 00000035 6 30
Обратите внимание ряд 4,5 ушел, потому что не было никакого второго интервью для агента 2. Ряд 1 ушел, потому что было выше месяц для агента 1, интервью 2.
Мои текущие мысли, как это сделать, кажутся чрезмерно сложными. Я имею в виду разбить ID на две колонки, одну с первыми 7 цифрами, другую колонку с последней цифрой. Затем проведите цикл по всем данным, и в каждой строке запустите другой цикл, чтобы увидеть, соответствует ли идентификатор, соответствующий строке, интервью 2 и интервью 5. Если это так, отлично. Если это не так, я должен удалить все строки с этим идентификатором.
Далее, я должен сделать аналогичную вещь для удаления месяцев без макс.
Я чувствую, что могу сделать выше, но это очень громоздко. Есть лучший способ сделать это? Спасибо.
Разделение это отличная идея, увидеть 'substr'?. Создайте столбец 'agent' и столбец' интервью'. Затем вы должны найти, какие агенты ** делают **, 2-го собеседования, 'agents_with_second = data $ agent [data $ interview == 2]' и фильтровать ваши данные только для этих агентов. 'data = data [data $ agent% in% agents_with_second,]' – Gregor
Спасибо. Разделение также может быть выполнено, если один столбец будет модулем 10 идентификатора, а другой столбец - всего целым числом ID/10. substr тоже может работать. Что после этого? Пробивается ли только один хороший способ? EDIT: Ах, отличная идея. – user43395
Да, это сработает, если ваш идентификатор на самом деле является числовым. Поскольку он начинается с 0, я уверен, у вас есть строка или фактор на ваших руках. Чтобы сделать ваш пример воспроизводимым, включая типы данных, поделитесь своими данными с помощью 'dput (капли (head (data))). (Да, извините, я редактировал, поскольку вы комментировали, по-видимому.) – Gregor