У меня есть набор данных data
семей, где каждое домохозяйство идентифицировано переменной id
, и каждый человек идентифицирован с помощью id + num
(идентификатор семьи + член семьи). Для каждого человека у меня есть разные демографические характеристики, например:
id num age wage edu marital_status
1 1 33 1200 Secondary Married/Cohabitating
1 2 35 1100 College Married/Cohabitating
1 3 12 -1 Not applicable Not applicable
2 1 27 1600 College Single
3 1 59 2000 Secondary Married/Cohabitating
3 2 51 1800 Other Married/Cohabitating
Я создал набор переменных, которые фиксируют характеристики другого члена семьи. Так, например, я хотел иметь переменную для «заработной платы партнера» wage_p
для домохозяйств с двумя взрослыми, состоящими в браке или сожительстве, которую я получил с помощью
sums = tapply(data$wage, data$id, sum)
data$wage_tot = sums[match(data$id,names(sums))]
data$wage_tot[!(data$id %in% data$id[duplicated(data$id)])] = NA
data$wage_p = data$wage_tot - data$wage
В основном, я суммировал wage
на семью, получив wage_tot
, а затем вычитал wage
, чтобы получить wage_p.
Это сработало, потому что я сначала ограничил набор данных женатыми или сожительствующими лицами (так что у меня было 1 или 2 человека на семью). (Я знаю, что это, вероятно, более запутано, чем необходимо).
Мои результаты:
id num age wage edu marital_status wage_tot wage_p
1 1 33 1200 Secondary Married/Cohabitating 2300 1100
1 2 35 1100 College Married/Cohabitating 2300 1200
2 1 27 1600 College Single NA NA
3 1 59 2000 Secondary Married/Cohabitating 3800 1800
3 2 51 1800 Other Married/Cohabitating 3800 2000
Теперь проблема возникает, когда я хочу сделать это с категориальными переменными, потому что я не могу получить сумму, а затем вычесть, как я сделал с непрерывными переменными. Так, например, если я хочу создать переменную, которая фиксирует уровень образования супруга, edu_p
.
id num age wage edu marital_status edu_p
1 1 33 1200 Secondary Married/Cohabitating College
1 2 35 1100 College Married/Cohabitating Secondary
2 1 27 1600 College Single NA
3 1 59 2000 Secondary Married/Cohabitating Other
3 2 51 1800 Other Married/Cohabitating Secondary
Единственная идея, которую я мог придумать, - это преобразовать категориальную переменную в числовую, использовать мой метод, а затем преобразовать их снова, но я уверен, что это намного сложнее, чем должно быть.
Может кто-нибудь мне помочь?
dput(data)
и вставить это в свой вопрос? Намного легче помочь вам, если у нас есть образец ваших данных. Кроме того, если бы вы могли опубликовать образец того, как выглядит ваш желаемый результат, это тоже было бы полезно. Узнайте больше о предоставлении минимального воспроизводимого примера. - person Ben Norris   schedule 15.08.2020