私は次のような244データフレームのリストを持っています: リストの名前はdatas
です。forループ内のifelse inside mutateを使用してエラーが発生しました
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
私は別の年のために異なる値を乗じ、fix.sal
と呼ばれる新しい列を作成したいと思います。たとえば、2000と同じ行にあるsal
の2を乗算します。同じように、sal
の値に乗算された数値は、2005年には1.8、2010には1.5、2013には1.2、2015には1です。このようにする必要があります:私はどのパッケージdplyr
ためmutate
内ifelse
を使用することにより、これを行うことに成功した
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
。
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)))))
しかし、私は、リストdatas
244枚のデータフレームに、この操作を行う必要があります。
だから私はこのようなforループを使ってやろうとしました。
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)))))
}
エラーが発生しました。
Error: invalid subscript type 'integer'
どうすればこの問題を解決できますか?
すべてのコメントをいただければ幸いです! :)
ありがとうございます...!私はそれを解決した:) – min