Условная замена значений во всем фрейме данных - PullRequest
0 голосов
/ 10 сентября 2018

Как правильно заменить значения во всем фрейме данных без указания строк или столбцов?

Давайте предположим, что я хотел бы заменить все значения, где abs(x) > .5 на <- "duck"

В этом случае

> df <- data.frame(a = rnorm(5), b = rnorm(5), c = rnorm(5))
> df
            a          b          c
1  1.37481216 -0.1760366 -0.5122730
2  0.09204844 -0.4270991  0.3211998
3 -0.43563818  0.7560178  0.5399643
4 -0.02078887  0.5961020 -0.5985515
5  0.99129234 -0.9959395 -0.6488177

желаемый результат будет

            a          b          c
1  "duck"     -0.1760366  "duck"
2  0.09204844 -0.4270991  0.3211998
3 -0.43563818  "duck"     "duck"
4 -0.02078887  "duck"     "duck"
5  "duck"      "duck"     "duck"

В то время как этот пост требует спецификации столбцов, я ищудинамическая замена всего фрейма данных.

Спасибо

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018

Использование replace:

replace(df,abs(df)>0.5,"duck")
0 голосов
/ 10 сентября 2018

A dplyr решение:

df %>% 
  mutate_all(funs(ifelse(abs(.) > .5, "duck", .)))
0 голосов
/ 10 сентября 2018

База R

df[abs(df) > 0.5] <- "duck"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...