Eu tenho este conjunto de dados:
set.seed(123)
old <- data.frame(matrix(sample(c(1:10, NA), 35, replace = TRUE), ncol = 7, nrow = 5))
Em cada linha, quero encontrar os primeiros 5 valores não-NA e colocá-los em um novo dataframe.
Pensei em como fazer isso com a seguinte função:
extract_non_na <- function(row) {
non_na_values <- na.omit(row)
if (length(non_na_values) < 5) {
non_na_values <- c(non_na_values, rep(NA, 5 - length(non_na_values)))
}
return(non_na_values[1:5])
}
O problema agora era como aplicar essa função nas linhas de R. Eu investiguei isso e aparentemente isso é feito com t?
new <- t(apply(old, 1, extract_non_na))
Este é o protocolo correto?
Se você quiser ter ações em linhas, você pode usar
apply
como abaixoOu você pode tentar
order
+row
como abaixo