Ich habe eine Liste von 244 Datenrahmen, die wie folgt aussieht: Der Name der Liste ist datas
.Fehler bei der Verwendung von ifelse innerhalb muate innerhalb der for-Schleife
datas[[1]]
year sal
2000 10000
2000 15000
2005 10000
2005 9000
2005 12000
2010 15000
2010 12000
2010 20000
2013 25000
2013 15000
2015 20000
Ich möchte eine neue Spalte fix.sal
genannt machen, verschiedene Werte für verschiedene Jahre multipliziert wird. Zum Beispiel multipliziere ich 2 auf sal
s, die in den gleichen Zeilen mit 2000 sind. Auf die gleiche Weise multipliziert die Zahl sal
Wert 1,8 für 2005, 1,5 für 2010, 1,2 für 2013, 1 für 2015. Also das Ergebnis sollte wie folgt sein:
Year sal fix.sal
2000 10000 20000
2000 15000 30000
2005 10000 18000
2005 9000 16200
2005 12000 21600
2010 15000 22500
2010 12000 18000
2010 20000 30000
2013 25000 30000
2013 15000 18000
2015 20000 20000
I unter Verwendung ifelse
innerhalb mutate
des für Paket dplyr
, dies zu tun gelungen.
library(dplyr)
datas[[1]]<-mutate(datas[[1]], fix.sal=
ifelse(datas[[1]]$Year==2000,datas[[1]]$sal*2,
ifelse(datas[[1]]$Year==2005,datas[[1]]$sal*1.8,
ifelse(datas[[1]]$Year==2010,datas[[1]]$sal*1.5,
ifelse(datas[[1]]$Year==2013,datas[[1]]$sal*1.2,
datas[[1]]$sal*1)))))
Aber ich habe diese Operation zu dem 244 Datenrahmen in der Liste datas
zu tun.
Also habe ich versucht, es mit der for-Schleife so zu tun;
for(i in 1:244){
datas[[i]]<-mutate(datas[[i]], fix.sal=
ifelse(datas[[i]]$Year==2000,datas[[i]]$sal*2,
ifelse(datas[[i]]$Year==2005,datas[[i]]$sal*1.8,
ifelse(datas[[i]]$Year==2010,datas[[i]]$sal*1.5,
ifelse(datas[[i]]$Year==2013,datas[[i]]$sal*1.2,
datas[[i]]$sal*1)))))
}
Dann kam ein Fehler;
Error: invalid subscript type 'integer'
Wie kann ich das lösen ...?
Alle Kommentare werden sehr geschätzt! :)
Vielen Dank ...! Ich habe es gelöst :) – min