#count #stata #unique-values
Вопрос:
У меня есть уникальные идентификаторы в строках, где столбцы-это ID
имена их «отправленных» друзей. Чтобы получить количество «принятых» друзей, мне нужно подсчитать, сколько раз идентификатор появляется во всех столбцах и строках набора данных. Это легко в R, но я хотел бы остаться в Stata для этого проекта.
ID | F1_ID | F2_ID | F3_ID | Идентификаторы |
---|---|---|---|---|
1 | 2 | 3 | 4 | 4 |
2 | 4 | 1 | 4 | |
3 | 1 | 2 | 3 | |
4 | 2 | 1 | 3 | 3 |
Данные об игрушках приведены выше. Здесь есть четыре упоминания ID #1
, три упоминания ID #4
и т. Д.
Я хочу сгенерировать переменную, содержащую количество раз, когда каждое ID
значение в первом столбце упоминается в любом столбце набора данных. Это проиллюстрировано в ID_mentions
колонке.
Ответ №1:
Оказывается, я кое-что написал на этой территории. Вам нужно будет установить это с помощью ssc install tab_chi
* Example generated by -dataex-. For more info, type help dataex
clear
input byte(id f1_id f2_id f3_id)
1 2 3 4
2 4 1 .
3 1 2 .
4 2 1 3
end
tabm *id
| values
variable | 1 2 3 4 | Total
----------- -------------------------------------------- ----------
ID | 1 1 1 1 | 4
F1_ID | 1 2 0 1 | 4
F2_ID | 2 1 1 0 | 4
F3_ID | 0 0 1 1 | 2
----------- -------------------------------------------- ----------
Total | 4 4 3 3 | 14
ОТРЕДАКТИРУЙТЕ, Чтобы подсчитать все упоминания:
gen mentions = .
quietly forval i = 1/`=_N' {
egen work = anycount(*id), value(`=id[`i']')
su work, meanonly
replace mentions = r(sum) in `i'
drop work
}
list
Комментарии:
1. Спасибо, Ник, этот пакет и файлы справки являются информативными. Знаете ли вы, как извлечь количество в качестве значений переменных? Например, где значение строки столбца новой переменной-это количество раз, когда в наборе данных упоминается значение строки первого столбца «ИДЕНТИФИКАТОР»?
2. Смотрите справку по
tabm
: вы можетеreplace
сохранить набор данных в памяти. В противном случае см.egen
Различныеany
функции для подсчета между переменными.3. Еще раз спасибо, Ник. Я запросил эти файлы и все еще не могу найти ответ. В результате я решил переехать в R.
4. Я действительно не понимаю, какую новую переменную вы хотите. Должен ли он быть выровнен с исходными данными или в новом наборе данных. Описание «новая переменная» слишком расплывчато, чтобы я мог догадаться. Можете ли вы дополнить свой вопрос конкретным примером?
5. Привет, Ник. Я отредактировал исходное сообщение, чтобы добавить четвертую колонку, иллюстрирующую то, что я ищу. Спасибо!