Есть причина, по которой ваши данные не меняются. Возьмите первое условие, например:
if (housing$Car == 0 && housing$Tunit == 1)
{housing$Car = median(housing$Car)}
Вы проверяете, равен ли весь столбец нулю. Наиболее определенно потребуется только первый элемент для оценки условия.
То, что вы могли бы сделать, что-то вроде:
require(dplyr)
median_car = median(housing$Car)
housing = housing %>%
mutate(Car = if_else(Car == 0 & Tunit == 1,median_car,Car))
Вы можете написать остальные 3 утверждения аналогично вместе. Дайте мне знать, если это работает.