Я хочу повторить значения, пока новое значение не появится по группе. У меня есть функция, которую я нашел в Интернете некоторое время назад, которая почти делает то, что я ищу, но не совсем. Вот эта функция:
repeat.before <- function(x) {
ind <- which(!is.na(x))
ind_rep <- ind
if (is.na(x[1])) {
ind_rep <- c(min(ind), ind)
ind <- c(1, ind)
}
rep(x[ind_rep], times = diff(c(ind, length(x) + 1)))
}
Эта функция будет успешно повторять значение до появления нового значения по группам. Проблема состоит в том, что если столбец начинается с NA, следующие строки, которые существуют до первого значения, в конечном итоге получат это первое значение вместо оставшегося NA. Я проиллюстрирую, что я имею в виду на этом примере:
group location
A NA
A NA
A New York
A NA
A NA
B Chicago
B NA
B Philly
B NA
Код выше выведет это:
group location
A New York
A New York
A New York
A New York
A New York
B Chicago
B Chicago
B Philly
B Philly
Что, опять же, очень близко к тому, что я ищу, но не совсем. Вот выход, который я ищу:
group location
A NA
A NA
A New York
A New York
A New York
B Chicago
B Chicago
B Philly
B Philly
По сути, я не хочу, чтобы «повторяющийся» код начал работать, пока не найдет свое первое значение. Пока это не произойдет, я бы хотел, чтобы ряды оставались NA. Цель состоит в том, чтобы строки не были неправильно классифицированы, т. Е. В приведенном выше примере первые две строки A не должны быть помечены как New York.