Определите и замените минимальное значение из числового столбца, присутствующего во всех фреймах данных в списке фреймов данных. - PullRequest
0 голосов
/ 12 февраля 2019

Мне нужен способ, чтобы определить минимальное значение в конкретном столбце, представленном во всех фреймах данных в списке фреймов данных, и заменить его нечисловым символом.Например:

df1 <- data.frame(x=c("a","b","c"), y=c(2,4,6))
df2 <- data.frame(x=c("a","b","c"), y=c(10,20,30))
myList <- list(df1, df2)


[[1]]
  x y
1 a 2
2 b 4
3 c 6

[[2]]
  x  y
1 a 10
2 b 20
3 c 30

должно стать

[[1]]
  x y
1 a *
2 b 4
3 c 6

[[2]]
  x  y
1 a *
2 b 20
3 c 30

Как лучше?Было бы замечательно, если бы кто-то знал решение Base R и внешних пакетов (purrr).

Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019
      for(i in 1:length(myList)){
  currMin = min(myList[[i]]$y)
  myList[[i]]$y[myList[[i]]$y==currMin] <- '*'
}

обратите внимание, назначение '*' преобразует тип в символ

0 голосов
/ 12 февраля 2019

Вот базовая опция R

lapply(myList, function(df) transform(df, y = replace(y, which.min(y), "*")))
#[[1]]
#  x y
#1 a *
#2 b 4
#3 c 6
#
#[[2]]
#  x  y
#1 a  *
#2 b 20
#3 c 30

Или то же самое в tidyverse

library(tidyverse)
map(myList, ~.x %>% mutate(y = replace(y, which.min(y), "*")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...