次のようなデータフレームがあります。
rel <- c(2, 5, NA, 3, 6)
year.in <- c(4, NA, 2, 3, 2)
year.out <- c(6, 7, NA, 5, 4)
year.1 <- c(NA, NA, NA, NA, NA)
year.2 <- c(NA, NA, NA, NA, NA)
year.3 <- c(NA, NA, NA, NA, NA)
year.4 <- c(NA, NA, NA, NA, NA)
year.5 <- c(NA, NA, NA, NA, NA)
df <- as.data.frame(cbind(rel, year.in, year.out, year.1, year.2, year.3,
year.4, year.5))
私がやりたいのは、「rel」の値で year.1 - year.5 の欠損値を更新することですが、次の場合に限ります: (year.in >= year.i AND year.out <= year.i) (i は 1:5 です)
ちょうど入学年に焦点を当てて、私はこれを思いついた:
for (i in 1:5) ifelse(df$year.in < i,
df[paste("year", i, sep= ".")]<- NA,
df[paste("year", i, sep= ".")]<- df["rel"])
しかし、これはすべての year.i 変数を rel の値に置き換えるだけです。
2 つの質問があります。
上記の条件で「rel」値を使用して year.i 変数を更新するにはどうすればよいですか?
ここで if else ステートメントを使用するのは悪いことですか?
よろしくお願いします。
リチャード