Предположим, что у меня есть этот фрейм данныхДинамически заменить значения столбца на основе имеющихся значений из другого столбца
set.seed(2)
df <- data.frame(c1 = sample(c(0:3,NA), 50, replace = T), c2 = sample(c(0:3,NA), 50, replace = T),
c3 = sample(c(0:3,NA), 50, replace = T), c4 = sample(c(0:3,NA), 50, replace = T))
head(df)
c1 c2 c3 c4
1 0 0 1 0
2 3 0 2 1
3 2 3 NA NA
4 0 NA NA 1
5 NA 1 1 3
6 NA NA 2 1
Когда c4 является 0, я хотел бы заменить его на следующей доступной стоимости без НС в c3. Если c3 - NA, то c2 и т. Д.
Я пытаюсь научиться, как это сделать, поэтому не просто бросайте ответ! Если все в порядке, предложите возможные решения. Заранее спасибо.
Edit:
Ожидаемый результат:
head(df)
c1 c2 c3 c4
1 0 0 1 1 # This would be the only difference with the head output from above
2 3 0 2 1
3 2 3 NA NA
4 0 NA NA 1
5 NA 1 1 3
6 NA NA 2 1
Ну, c4 не является 0, поэтому замена не требуется. – cimentadaj
'df $ c4 <- apply (df, 1, function (x) { ifelse (x [4] == 0, x [! Is.na (x)] [длина (x [! Is.na (x)]) - 1], x [4]) }) '? – Abdou
Что делать, если следующее значение 'NA' равно нулю, как row9 вашего' df'? – 989