Как перекодировать непрерывный возраст в возрастные категории и одновременно создать новую переменную - PullRequest
1 голос
/ 01 ноября 2019

У меня есть переменная возраста, и мне нужно перекодировать ее в категории. Я видел оба этих вопроса, но ответы, кажется, только создают что-то в памяти. Когда я открываю data.table, новой категориальной переменной там нет. Я не могу видеть это, и я не могу сделать это подмножеством. Но я могу запустить частоту на этом. Но мне нужно, чтобы это была его собственная переменная.

R код для классификации возраста по группам / лоткам / перерывам

Преобразование переменной возраста в порядковую переменную

Как преобразовать непрерывную переменную в множитель и получить материальную переменную впоследствии? Или как мне взять то, что создается в памяти, и сделать это реальным?

`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+')`

1 Ответ

1 голос
/ 01 ноября 2019

Просто присвойте результат вашего предпочтительного решения в столбце в data.frame. Например:

df$agegroups<-cut(df$ages, breaks=c(20, 30, 40, 50), right = FALSE)

Например:

df<-data.frame(age = c(55, 60, 65, 70, 75, 80, 85, 90, 95))
df
  age
1  55
2  60
3  65
4  70
5  75
6  80
7  85
8  90
9  95
df$age_cat<-cut(df$age, breaks=c(0,17,24,30,39,54,64,75), right = FALSE)
df
  age age_cat
1  55 [54,64)
2  60 [54,64)
3  65 [64,75)
4  70 [64,75)
5  75    <NA>
6  80    <NA>
7  85    <NA>
8  90    <NA>
9  95    <NA>
...