【发布时间】:2019-11-01 14:48:47
【问题描述】:
我有一个年龄变量,我需要将其重新编码为类别。我已经看到这两个问题都被问到了,但答案似乎只是在记忆中创造了一些东西。当我打开 data.table 时,新的分类变量不存在。我看不到它,也无法使用它进行子集化。但我可以在它上面运行一个频率。但我需要它成为自己的变量。
R code to categorize age into group/ bins/ breaks
Convert Age variable into ordinal variable
如何将连续变量转换为因子并在之后获得有形变量? 或者,我如何将内存中创建的内容变为现实?
`setDT(LSSCM)[client_age <17, agegroup := "0-17"]`
`LSSCM[client_age >=18 & client_age <=24, agegroup := "18-24"]`
`LSSCM[client_age >=25 & client_age <=30, agegroup := "25-30"]`
`LSSCM[client_age >=31 & client_age <=39, agegroup := "31-39"]`
`LSSCM[client_age >=40 & client_age <=54, agegroup := "40-54"]`
`LSSCM[client_age >=55 & client_age <=64, agegroup := "55-64"]`
`LSSCM[client_age >=65 & client_age <=75, agegroup := "65-75"]`
`LSSCM[client_age >=76, agegroup := "76+"]`
也试过了。
LSSCM$age_cat <- case_when(LSSCM$client_age <= 17 ~ '0-17',
between(LSSCM$client_age, 18, 24) ~ '18-24',`
between(LSSCM$client_age, 25, 30) ~ '25-30',`
between(LSSCM$client_age, 31, 39) ~ '31-39',`
between(LSSCM$client_age, 40, 54) ~ '40-54',`
between(LSSCM$client_age, 55, 64) ~ '55-64',`
between(LSSCM$client_age, 65, 75) ~ '65-75',`
LSSCM$client_age >= 76 ~ '76+')`
【问题讨论】:
-
在您尝试使用
case_when之后,会发生什么?你怎么知道它不起作用? -
重新编码工作,但是当我打开数据集(框架,无论如何)时,我找不到它。只有 32 个变量,所以并不难看出。它只是不存在。我来回滚动了一吨。但我可以在上面运行一个频率。所以它在某个地方。
-
好的,我最终感到沮丧并删除了所有内容并重新开始,现在它正在出现。 ???我确实没有什么不同。我发誓。当我重新开始时,我重新运行了 setDT,它现在显示在 data.frame 中。谢谢。我发誓,我在这件事上呼吸错了,事情也出了问题。