Как найти и заменить минимальное значение в кадре с текстом в r - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть датафрейм с 20 столбцами, и мне нравится определять минимальное значение в каждом из столбцов и заменять их текстом, таким как «min».Ценим любую помощь

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Вы можете apply функцию для каждого столбца, которая заменяет минимальное значение строкой.Это возвращает matrix, который при желании может быть преобразован во фрейм данных.Как указал IceCreamToucan, все строки будут иметь тип character, поскольку каждая переменная должна иметь один и тот же тип:

apply(df, 2, function(x) {
    x[x == min(x)] <- 'min'
    return(x)
})

     a       b      c      
[1,] "min"   "0.31" "0.62" 
[2,] "0.78"  "min"  "-0.01"
[3,] "0.68"  "0.33" "min"  
[4,] "-0.01" "0.3"  "0.56" 
[5,] "0.55"  "0.28" "-0.03"
0 голосов
/ 14 ноября 2018
apply(df, MARGIN=2, FUN=(function(x){x[which.min(x)] <- 'min'; return(x)})
0 голосов
/ 14 ноября 2018

Вы можете использовать метод ниже, но знайте, что это преобразует все ваши столбцы в символ, поскольку векторы должны иметь элементы, которые имеют одинаковый тип.

library(dplyr)

df %>% 
  mutate_all(~ replace(.x, which.min(.x), 'min'))
#       a    b     c
# 1   min 0.31  0.62
# 2  0.78  min -0.01
# 3  0.68 0.33   min
# 4 -0.01  0.3  0.56
# 5  0.55 0.28 -0.03
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...