Изменить значения кадра данных в R в зависимости от частоты - PullRequest
3 голосов
/ 17 июня 2020

Я пытаюсь перекодировать значения символов из фрейма данных в R как:

freq(prueba$frutas, sort = "dec")

                       n    % val%
BANANA             36793 61.9 66.3
UVA                 5206  8.8  9.4
FRESA               3153  5.3  5.7
CEREZA              2883  4.9  5.2
MANZANA             2748  4.6  4.9
MANGO               1680  2.8  3.0
MELON               1063  1.8  1.9
SANDIA              1061  1.8  1.9
OTROS                766  1.3  1.4
PERA                  97  0.2  0.2
KIWI                  72  0.1  0.1
BROCOLI                1  0.0  0.0
NA                  3877  6.5   NA

Поэтому я хотел бы заменить все «символьные» значения в фрейме данных, где частота ниже 6%, на «другие» ", поэтому результат будет:

freq(prueba$frutas, sort = "dec")

                        n    % val%
BANANA              36793 61.9 66.3
OTHER               13524 22.8 24.3
UVA                  5206  8.8  9.4
NA                   3877  6.5   NA

Обычно я заменяю значения, используя replace, как показано ниже, но я хотел бы знать, есть ли лучший способ сделать это, используя 6 % значения.

prueba$frutas <- replace(prueba$frutas, which(prueba$frutas != c("BANANA","UVAS")) , "OTHER")

1 Ответ

0 голосов
/ 17 июня 2020

При отсутствии ваших данных и дополнительной информации могу предложить forcats::fct_lump_prop. Вот пример использования набора данных из questionr, откуда, я полагаю, вы получаете функцию freq.

library(questionr)
library(forcats)

data(hdv2003)
freq(hdv2003$qualif, sort = "dec")

#>                            n    % val%
#> Employe                  594 29.7 35.9
#> Ouvrier qualifie         292 14.6 17.7
#> Cadre                    260 13.0 15.7
#> Ouvrier specialise       203 10.2 12.3
#> Profession intermediaire 160  8.0  9.7
#> Technicien                86  4.3  5.2
#> Autre                     58  2.9  3.5
#> NA                       347 17.3   NA

hdv2003$newqualif <- forcats::fct_lump_prop(hdv2003$qualif, 0.06)
freq(hdv2003$newqualif, sort = "dec")

#>                            n    % val%
#> Employe                  594 29.7 35.9
#> Ouvrier qualifie         292 14.6 17.7
#> Cadre                    260 13.0 15.7
#> Ouvrier specialise       203 10.2 12.3
#> Profession intermediaire 160  8.0  9.7
#> Other                    144  7.2  8.7
#> NA                       347 17.3   NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...