tabsplit
aus dem tab_chi
Paket auf SSC wird dies für Sie tun.
clear
input id str42 Category
1 "Economics"
2 "Biology"
3 "Psychology; Economics"
4 "Economics; Psychology"
end
capture ssc install tab_chi
tabsplit Category, p(;)
Category | Freq. Percent Cum.
------------+-----------------------------------
Biology | 1 16.67 16.67
Economics | 3 50.00 66.67
Psychology | 2 33.33 100.00
------------+-----------------------------------
Total | 6 100.00
Hinweis: Sie können Semikolons und damit Sätze wie diese zählen.
gen count = 1 + length(category) - length(subinstr(category, ";", "", .))
Die Logik ist, dass Sie die Länge der Zeichenfolge und seine Länge sollte Semikolons durch leere Strings ;
ersetzt messen (nämlich entfernt). Der Unterschied ist die Anzahl der Semikolons, die Sie hinzufügen 1.
EDIT: Wie Sie zu einer anderen Datenstruktur gelangen, beginnend mit dem Datenbeispiel oben.
. split Category, p(;)
variables created as string:
Category1 Category2
. drop Category
. reshape long Category, i(id) j(mention)
(note: j = 1 2)
Data wide -> long
-----------------------------------------------------------------------------
Number of obs. 4 -> 8
Number of variables 3 -> 3
j variable (2 values) -> mention
xij variables:
Category1 Category2 -> Category
-----------------------------------------------------------------------------
. drop if missing(Category)
(2 observations deleted)
. list, sepby(id)
+----------------------------+
| id mention Category |
|----------------------------|
1. | 1 1 Economics |
|----------------------------|
2. | 2 1 Biology |
|----------------------------|
3. | 3 1 Psychology |
4. | 3 2 Economics |
|----------------------------|
5. | 4 1 Economics |
6. | 4 2 Psychology |
+----------------------------+
Danke, es hat perfekt funktioniert. Dieses Paket wird sicherlich nützlich sein. Ein kleines Problem ist vielleicht, dass der Tabsplit-Befehl 'nach Sortierung' nicht akzeptiert. Irgendeine Idee, wie ich fortfahren könnte, wenn ich Tabsplit auf Untergruppe anwenden wollte? – Homard
Siehe überarbeitete Antwort. Dies wiederholt zu tun, ist ein klares Zeichen dafür, dass Sie eine andere Version des Datasets als auch die Gegenwart benötigen. –