Ich bin relativ neu zu R
und mehr zu Stata
verwendet.Verwenden Sie Werte von Stata zu R data.frame aber zeigen Sie Etiketten anstelle von Werten
Ich konnte eine Datenbank von Stata
zu einem R
data.frame
mit library(foreign)
lesen.
data=read.dta("mydata.dta",
convert.dates = TRUE,
convert.factors = TRUE,
missing.type = FALSE,
convert.underscore = FALSE,
warn.missing.labels = TRUE)
Werte (in den sens der Stata Sprache) sind jedoch nicht importiert, nur Etiketten importiert werden.
Lassen Sie mich es ein wenig mehr erklären. Angenommen, ich möchte eine Bildungsvariable namens "edu" manipulieren. In Stata Sprache verwende ich numerische Werte anstelle von Etiketten meine Variable zu manipulieren und der Dateneditor zeigt die Etiketten, solange ich meine Etiketten definiert habe. Nehmen wir zum Beispiel, dass meine Variable „edu“ nimmt die Werte 10 bis 40, ordnet der folgende Code ein Etikett zu jedem Wert:
label define lib_edu
10 "Less than high-school degree"
20 "12th grade or higher, no college degree"
30 "Undergraduate level (2 to 4 years of college)"
40 "Graduate level (5 years of college or more)", add;
label values edu lib_edu;
Dann, wenn ich möchte, dass meine Variable zu manipulieren, ich brauche die Werte zu verwenden. Zum Beispiel, wenn ich will von meinem Dataset Menschen fallen zu lassen, deren Etikett weniger als High-School-Abschluss, habe ich einfach tun:
drop if edu==10
Aber in meinem importierten R
data.frame
werden die Etiketten als Faktoren importiert. Jedem Faktor ist ein Level zugeordnet, der nicht unbedingt meinen Stata-Werten entspricht, da er von 1 neu gestartet wird. Ich kann Levels nicht benutzen, um meine Variable zu manipulieren. Wenn ich von meinem Dataset Menschen, dessen Label fallen will weniger als High-School-Abschluss, muß ich das ganze Etikett schreiben:
data <- data[data$edu!="Less than high-school degree",]
, die überhaupt nicht bequem ist, vor allem, wenn das Etikett lang und komplex ist.
Ist es möglich, wie in Stata zu tun, das heißt: manipulieren numerische Werte beim Bearbeiten der Daten.frame mit Etiketten, vorausgesetzt, dass meine Daten aus Stata exportiert werden?
Wir danken Ihnen im Voraus.
Ja, R-Faktoren haben immer Integer-Codes, die von eins aufwärts zählen. Sobald Sie jedoch die neuen Codes kennen, sollten Sie sie wie 'f = factor (c (" a "," b ")) verwenden können; f [labels (f) [f]! = 1] '(außer" a ", das einen Code von 1 hat). Persönlich ordne ich die langen Labels Abkürzungen zu und arbeite mit diesen ("none", "hs", "ug", "g"). – Frank
Ich bekomme aus Ihrer Antwort, dass 1) es nicht möglich ist, Stata Integer-Codes zu verwenden (zumindest nicht beim direkten Import der Daten nach R); aber das 2) es ist möglich, R neue Ebenen zu verwenden; aber das 3) die weniger langweilige Methode bleibt lange Etiketten in kurze umzuwandeln. Danke für Ihre Hilfe. – Elixterra
Ja. Oh, noch eine Sache, ein Vorteil von R: Sie können Faktoren geordert haben und Ungleichungen benutzen, Maxes und Minen nehmen, etc .: 'f = Faktor (c (" hs "," hs "," none "," g ")), levels = c ("keine", "hs", "ug", "g"), geordnet = WAHR); f [f> = "ug"] ' – Frank