2016-03-18 2 views
-2

Есть ли способ сделать следующий код Stata в R?Использование переменных из разных лет для создания модели

Я хочу создать шахматную модель, и я хочу использовать значения определенных переменных в 1994 году для людей, которым в 1998 году исполнилось 40 лет; и вы хотите использовать значение один и те же переменные за 1996 год для людей, которые обращаются 40 в 2000 году

for any out temp emp edu married inc age \ var cesd1998 bitemp96 employ94 edu93 married94 inc94 age94 : gen XM2=Y if H0000200==1998 

for any out temp emp edu married inc age \ var cesd2000 bitemp98 employ96 edu95 married96 inc96 age96 : replace XM2=Y if H0000200==2000 
+4

Очень мало людей, которые могут посмотреть код Stata, а затем предоставить вам эквивалентную программу R. (Я когда-то пробовал и нашел страницы справки Stata полностью непрозрачными.) Вам нужно будет создать минимальный пример, закодированный в R, и описать на естественном языке, что нужно без фраз, таких как «определенные переменные». Постройте небольшой пример. Назовите переменные. И если это тот же вопрос, на который не ответил 2 дня назад, возможно, из-за отсутствия этих функций, затем скопируйте хорошие части в этот и удалите другой. –

+2

@ 42- +1. Будьте уверены, что Stata имеет смысл, если вы учитесь и работаете с ним. Я предполагаю то же самое из R. –

+0

Это очень похоже на вопрос, который я задал несколько дней назад, но я подумал, что, возможно, это будет иметь больший смысл. Я думаю, это не –

ответ

1

Это не ответ, но не легко помещается в комментарий. Я даже не пытаюсь выполнить R-код. Мне кажется, что беглые R-кодеры, а не я, могут разумно ожидать в качестве абсолютного минимума некоторой ясности в том, как вы держите данные в R.

Синтаксис Stata здесь далек от текущего, но устарел как из Stata 7. for в этом смысле уже не документирован.

Это не квалифицируется как минимальный, полный, поддающейся проверке, например: https://stackoverflow.com/help/mcve

for any out temp emp edu married inc age \ var cesd1998 bitemp96 employ94 edu93 married94 inc94 age94 : gen XM2=Y if H0000200==1998 

for any out temp emp edu married inc age \ var cesd2000 bitemp98 employ96 edu95 married96 inc96 age96 : replace XM2=Y if H0000200==2000 

Один перевод на текущий Stata является

local x1list "out temp emp edu married inc age" 
local x2list "out temp emp edu married inc age" 
local y1list "cesd1998 bitemp96 employ94 edu93 married94 inc94 age94" 
local y2list "cesd2000 bitemp98 employ96 edu95 married96 inc96 age96" 
local nvars : word count `x1list' 

forval j = 1/`nvars' { 
    local x : word `j' of `x1list' 
    local y : word `j' of `y1list' 
    replace `x'M2 = `y' if H0000200==1998 
    local x : word `j' of `x2list' 
    local y : word `j' of `y2list' 
    replace `x'M2 = `y' if H0000200==2000  
} 

Не на все центральные, но Попутно отметим, что один причина, по которой код настолько неудобен, что ваши соглашения об именах для переменных несовместимы.

+0

Большое спасибо за текущий код Stata. Я забыл удалить один из первого списка, это вызвало разницу между подсчетами. Я только что отредактировал. Спасибо, что заставило меня понять, что –

+0

Я исправил свой ответ после вашего исправления. Я не собираюсь поставлять код R, который вам нужен, поскольку я человек Stata. К сожалению, моя нынешняя догадка заключается в том, что ваш вопрос слишком непривлекателен для экспертов R, поскольку вы не объясняете, как ваши данные хранятся в R или пытаются использовать любой R-код. –

+0

R предоставляет функцию 'read.dta', которая может быть использована для построения R-кадра данных, который может быть преобразован в минимальный пример с использованием функции' dput'. Глядя на эти две версии кода Stata, мне интересно, нужно ли просто использовать 'merge'? –

Смежные вопросы