Удаление минимальных значений в длинной форме

#stata #reshape #long-integer #minimum

Вопрос:

Я работаю с Stata над набором данных, в котором много фермерских хозяйств, которые повторяются, если у них несколько участков: например, у них есть 3 участка, на которых они выращивают рисовые поля.

Теперь я хотел бы найти минимальное количество рисовых полей среди всех участков для данного домохозяйства, а затем drop этот ряд

Как мне это сделать?

Пример:

 HHID Plot Qty
1     1    1
1     2    3
2     1    0.5
2     2    1
 

Я хочу drop qty 1 и 0,5 для домашних хозяйств 1 и 2

так что мой столик будет

 HHID Plot Qty
1    2    3
2    2    1
 

Комментарии:

1. Как вы хотите относиться к галстукам? Например, если HHID бы 2 владели двумя участками с Qty 0,5, вы бы хотели отказаться от обоих? Или только один?

Ответ №1:

 bysort HHID (Qty) : drop if _n == 1 
 

Комментарии:

1. Со ссылкой на мой комментарий выше, что-то подобное bysort HHID (Qty) : drop if Qty == Qty[1] может быть желательно, если OP касается связей.

2. Я согласен. Галстукам нужно уделить внимание.

3. Огромное спасибо. Это очень полезно. Что делать, если я хочу удалить только если есть по крайней мере две записи, т. Е. Я не хочу удалять значения только с одной записью

4. Пожалуйста, отредактируйте свой вопрос, чтобы добавить новый вопрос.