R 如何将特定范围的列值转换为0和1

R 如何将特定范围的列值转换为0和1,r,dplyr,R,Dplyr,这是我的数据集,名为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

这是我的数据集,名为
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
我想将这些值分组在一个范围内,就像0-100之间的值是1,大于100的值是0。但当我运行代码时,它显示所有的值都是0。有人能帮我用两种方法吗。升级后的两个代码都将是可观的

一,

st$state\u alpha=ifelse((st$state\u alpha>=0&st$state\u alpha表(st$state\u alpha)
0
4769
二,

st$state\u alpha=(st$state\u alpha表(st$state\u alpha)
0
4769

如果可能,请帮助我掌握这两种技术。

任何答案都可能围绕
分组方式和
案例进行操作。我需要可复制的数据(通过dput等),但解决方案可能如下所示:

library(dplyr)
st %>%
    group_by(state_alpha) %>%
    mutate(st_range = case_when(sum(state_alpha==state_alpha) <= 100 ~ 1, TRUE ~ 0)))
库(dplyr)
st%>%
分组依据(州阿尔法)%>%
突变(st_范围=情况_时)(总和(状态_α==状态_α)%
data.frame()%>%

mutate(Freq=case_when(Freq state_alpha)不是数字列,但您的表是在原始df“st”的列上操作的,其中state_alpha只是一个字符缩写。如果您使用dput提供可复制的样本数据,我可以帮助找出解决方案。错误:列
st_range
必须是长度1(组大小),而不是0。第一个方法会引发此错误。第二个方法工作正常,但dataframe仅用两列替换整个表,即state_alpha和st_range。非常感谢您的帮助atleast@AniketRele我调整了第一个解决方案,再试一次。
st$state_alpha=(st$state_alpha<=100) + 0
> table(st$state_alpha)

   0 
4769
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))