Werte aus Spalte herausfiltern

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
BA_UZH

Werte aus Spalte herausfiltern

Beitrag von BA_UZH »

Hallo Zusammen

Ich habe meinen Datensatz "goq<-read.dta("qog_bas_ts_jan18.dta")" geladen und dann ein subsample "Afrika" erstellt:

> Afrika<-filter(goq,cname %in% c("Algeria","Angola","Benin","Botswana","Burkina Faso","Burundi","Cape Verde","Cameroon","Central African Republic","Chad","Comoros","Congo,Republic of","Congo, Democratic Republic","Cote d'Ivoire","Djibouti","Egypt","Equatorial Guinea","Eritrea","Ethiopia (-1992)","Ethiopia (1993-)","Gabon","Gambia","Ghana","Guinea","Guinea-Bissau","Kenya","Lesotho","Liberia","Libya","Madagascar","Malawi","Mali","Mauritania","Mauritius","Morocco","Mozambique","Namibia","Niger","Nigeria","Rwanda","Sao Tome and Principe","Senegal","Seychelles","Sierra Leone","Somalia","South Africa","South Sudan","Sudan (-2011)","Sudan (2012-)","Swaziland","Tanzania","Togo","Tunisia","Uganda","Zambia","Zimbabwe"))

Der sieht so aus:
> head(Afrika)
ccode cname year ccodealp cname_year ccodealp_year ccodecow ccodewb version
1 12 Algeria 1946 DZA Algeria 1946 DZA46 615 12 QoGBasTSJan18
2 12 Algeria 1947 DZA Algeria 1947 DZA47 615 12 QoGBasTSJan18
3 12 Algeria 1948 DZA Algeria 1948 DZA48 615 12 QoGBasTSJan18
4 12 Algeria 1949 DZA Algeria 1949 DZA49 615 12 QoGBasTSJan18
5 12 Algeria 1950 DZA Algeria 1950 DZA50 615 12 QoGBasTSJan18
6 12 Algeria 1951 DZA Algeria 1951 DZA51 615 12 QoGBasTSJan18

hat noch weitere Variablen.

Nün würde ich gerne aus der Spalte "year" nur die Jahre 1990-2017 haben.
Ich habe es bereits mit diversen Befehlen versucht, unter anderem mit folgendem:
Zeit<-Afrika[Afrika$year==c("1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017")]

Aber da bekomme ich immer folgende Fehlermeldung:
Warnmeldung:
In Afrika$year == c("1990", "1991", "1992", "1993", "1994", "1995", :
Länge des längeren Objektes
ist kein Vielfaches der Länge des kürzeren Objektes

Kann mir da jemand helfen?
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Werte aus Spalte herausfiltern

Beitrag von Athomas »

Vectors occurring in the same expression need not all be of the same length. If they are not, the value of the expression is a vector with the same length as the longest vector which occurs in the expression. Shorter vectors in the expression are recycled as often as need be (perhaps fractionally) until they match the length of the longest vector. In particular a constant is simply repeated.
Aber Du willst ja eigentlich was anderes - lustigerweise hast Du es ja oben in "Deiner" filter-Anweisung mit den Ländern richtig gemacht...

Warum behandelst Du die Jahreszahlen als Text?
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Werte aus Spalte herausfiltern

Beitrag von jogo »

Hallo BA_UZH,

willkommen im Forum!
1. Du hast den Code und den Output nicht formatiert, lies viewtopic.php?f=20&t=29
2. Du hast uns verschwiegen, dass Du weitere Pakete einsetzt, denn die von Dir verwendete Funktion filter() ist nicht die aus dem standardmäßig geladenen Paket stats
3. Auch sonst lieferst Du wenig Information, die nötig ist, um Dir zu helfen, wie z.B. das Ergebnis von

Code: Alles auswählen

str(Afrika)
Bitte lies viewtopic.php?f=20&t=11

Bitte lies auch den Hilfetext zu == und schau Dir folgende Beispiele an:

Code: Alles auswählen

x <- 1:5
x == 3
x == c(3, 4)
Du stellst Dir die Funktionsweise von == anders vor, als sie ist. Hier der passende Spruch für diese Situation:

Code: Alles auswählen

library(fortunes)
fortune(85)
Gruß, Jörg
Antworten