Если я вас правильно понял, вам нужна вся информация по строке, для которой одна из переменных имеет минимальное значение.
Вы можете попробовать which.min
, если это то, что вы хотите сделать.
с использованием набора данных mtcars, присутствующего в сеансе R:
mtcars[which.min(mtcars$mpg),]
Выше будет выбрана запись (строка), которая имеет минимальное значение поля mpg в данных mtcars.
#> mtcars[which.min(mtcars$mpg),]
# mpg cyl disp hp drat wt qsec vs am gear carb
#Cadillac Fleetwood 10.4 8 472 205 2.93 5.25 17.98 0 0 3 4
Теперь, если вы используете which
так, как вы использовали в своем наборе данных, вы можете получить что-то вроде этого:
mtcars[which(mtcars[[colname1]] == min(mtcars[[colname1]])),]
Это даст две записи, как показано ниже:
#> mtcars[which(mtcars[[colname1]] == min(mtcars[[colname1]])),]
# mpg cyl disp hp drat wt qsec vs am gear carb
#Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4
#Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4
Мораль истории which.min
производит первые экземпляры логического совпадения, но which
может дать вам оба экземпляра совпадения, если существует несколько записей одного и того же минимального значения.
Из документации:
Определяет местоположение, то есть индекс (первого) минимума или максимума
числового (или логического) вектора.
В вашем случае это может быть что-то вроде:
temp1[which.min(temp1[,colname]) ,]
В случае, если это не числовое значение, а делать что-то за один шаг, разбейте его для простоты.
temp1[,colname] <- as.numeric(temp1[,colname]) ##numeric conversion
temp1[which.min(temp1[,colname]) ,]
где colname = "сердечный приступ" по вашему вопросу
Если вы используете приведенный ниже код, вы можете иметь несколько записей, также кажется, вы написали правильный код , ваш код не работает, потому что у вас есть опечатка между colname и colname1
temp1[which(temp1[[colname]] == min(temp1[[colname]])),]