Перевод Stata Loop - PullRequest
       11

Перевод Stata Loop

0 голосов
/ 13 января 2020

Я хотел бы перевести следующие данные l oop в R:

foreach day of numlist 1/7 {;
replace dywt = 1/7 * 1/Freq[`day',1] if interview_day==`day';
}

Данные (вывод R):

> INTERVIEW_DAY[1:15]
 [1] 5 6 6 4 4 4 1 2 6 4 6 7 6 3 6

> Freq
[1] 0.14353969 0.14795762 0.14089618 0.14074198 0.14194271 0.14295769 0.14196413

> F
[1] 20720

> DYWT[1:15]
 [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

Заранее спасибо.

1 Ответ

1 голос
/ 13 января 2020

В R, если все они равны vector с, то эквивалентным было бы просто заменить вектор NA ('DYWT'), получив соответствующий 'Freq' для каждого значения последовательности 'INTERVIEW_DAY' (Freq[INTERVIEW_DAY] - as INTERVIEW_DAY - это последовательность числительного вектора c, которую можно использовать как вектор положения для 'Freq'), разделить на 1 и умножить на 1/max(INTERVIEW_DAY)

DYWT <- 1/max(INTERVIEW_DAY) * 1/Freq[INTERVIEW_DAY]

Или, если он основан на количестве уникальных элементов, он также может быть

DYWT <- 1/length(unique(INTERVIEW_DAY)) * 1/Freq[INTERVIEW_DAY]

или 1/7, где 7 - количество уникальных элементов в INTERVIEW_DAY (если некоторые из Индекс отсутствует, тогда может быть лучше использовать 1/7)

data

INTERVIEW_DAY <- scan(text = '5 6 6 4 4 4 1 2 6 4 6 7 6 3 6', what = integer())
Freq <- scan(text = '0.14353969 0.14795762 0.14089618 0.14074198 0.14194271 0.14295769 0.14196413', what = numeric())
...