Как бы я конвертировать значения столбцов в 0 и 1 для определенного диапазона - PullRequest
0 голосов
/ 26 сентября 2019

Это мой набор данных с именем st;

> head(st)
   sales0 sales1 sales2 sales3 sales4 country State CouSub countytownname population
1:    848    588    666   1116   1133       9    23  19770           town        423
2:    925    717    780   1283   1550       1    50  29575           town        298
3:    924    616    739   1154   1314      13    25   8470           town       3609
4:    924    646    683   1292   1297      35     6  99999         County      34895
5:   1017    730    735   1208   1326      27    50  60100           town       1139
6:   1494   1071   1196   1861   2023       9    25  37995           town       5136
   state_alpha        store_Type store  data CN_AF CN_GL CN_MR CN_SZ SC_M SC_N AN_AF
1:          ME Supermarket Type1     0 train     0     1     0     0    0    1     0
2:          VT Supermarket Type1     0 train     1     0     0     0    0    1     0
3:          MA Supermarket Type1     1 train     0     1     0     0    1    0     0
4:          CA Supermarket Type3     0 train     0     1     0     0    0    1     1
5:          VT Supermarket Type1     0 train     0     0     0     1    0    1     0
6:          MA Supermarket Type3     0 train     1     0     0     0    1    0     0

Таблица для соответствующего столбца state_alpha:

> table(st$state_alpha)

 AK  AL  AR  AZ  CA  CO  CT  DC  DE  FL  GA  GU  HI  IA  ID  IL  IN  KS  KY  LA  MA  MD 
 29  67  75  15  58  64 169   1   3  67 159   1   5  99  44 102  92 105 120  64 351  25 
 ME  MI  MN  MO  MS  MT  NC  ND  NE  NH  NJ  NM  NV  NY  OH  OK  OR  PA  PR  RI  SC  SD 
535  83  87 116  82  56 100  53  93 259  21  33  17  62  88  77  36  67  78  39  46  66 
 TN  TX  UT  VA  VI  VT  WA  WI  WV  WY 
 95 254  29 135   3 255  39  72  55  23

Я хотел сгруппировать эти значения в диапазоне, напримерэто будет 1 для значений от 0 до 100 и 0 для значений больше 100. Но когда я запустил свой код, он показал, что все значения равны 0. Может кто-нибудь помочь мне с обоими методами, которые я использовал, пожалуйста.Оба обновленных кода будут заметны.

1.

st$state_alpha=ifelse((st$state_alpha>=0 & st$state_alpha<=100),1,0)
> table(st$state_alpha)

   0 
4769 

2.

st$state_alpha=(st$state_alpha<=100) + 0
> table(st$state_alpha)

   0 
4769

Если возможно, пожалуйста, помогите мне с обоими методами, пожалуйста.

1 Ответ

0 голосов
/ 26 сентября 2019

Любой ответ, вероятно, вращается вокруг операций group_by и case_when.Мне нужны воспроизводимые данные (через dput и т. Д.), Но решение может выглядеть следующим образом:

library(dplyr)
st %>%
    group_by(state_alpha) %>%
    mutate(st_range = case_when(sum(state_alpha==state_alpha) <= 100 ~ 1, TRUE ~ 0)))

В качестве альтернативы, если вам нужна только таблица, преобразованная в диапазоны:

library(dplyr)
library(magrittr)
st %$%
table(state_alpha) %>%
data.frame() %>%
mutate(Freq = case_when(Freq <= 100 ~ 1, TRUE ~ 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...