У меня есть R
data.table
Максимальное значение одного столбца data.table на основе других столбцов
DT = data.table(x=rep(c("b","a",NA_character_),each=3), y=rep(c('A', NA_character_, 'C'), each=3), z=c(NA_character_), v=1:9)
DT
# x y z v
#1: b A NA 1
#2: b A NA 2
#3: b A NA 3
#4: a NA NA 4
#5: a NA NA 5
#6: a NA NA 6
#7: NA C NA 7
#8: NA C NA 8
#9: NA C NA 9
Для каждого столбца, если значение не NA
, я хочу, чтобы извлечь максимальное значение из колонки v
. Я использую
sapply(DT, function(x) { ifelse(all(is.na(x)), NA_integer_, max(DT[['v']][!is.na(x)])) })
#x y z v
#6 9 NA 9
Есть ли более простой способ достичь этого?
благодарит @DavidArenburg и благодарит за более надежный способ, я добавлю это! – Cath
Спасибо. Но разве это не так, как сейчас. – imsc
Существует также аргумент 'na.rm'' max' (который быстрее, чем подмножество и принятие max). – nicola