Мне интересно, есть ли функция в R, как в Stata, где вы можете использовать значение наблюдений n чисел до или после каждого наблюдения. Например, если мне нужно умножить или разделить наблюдение до того, как я напишу что-то вроде этого variable_x/variable_x[_n-1]
Что такое R эквивалент функции _n Stata?
ответ
В общем, вы не можете получить такую же функциональность. Например, в Stata, можно перебирать с _n как ...
clear
set obs 5
gen x = 1
replace x = x[ _n - 1 ]*1.1 if _n > 1
list
+--------+
| x |
|--------|
1. | 1 |
2. | 1.1 |
3. | 1.21 |
4. | 1.331 |
5. | 1.4641 |
+--------+
В R, вы можете обрабатывать этот случай с функцией cumprod
. В других случаях вы можете использовать cumsum
. И в других, lag
(как упоминалось @ Хашаа). Эти решения охватывают большинство, но не все случаи.
Если вам действительно нужно выполнить итерацию с использованием предыдущей строки и не использовать один из этих ярлыков, вы все равно можете использовать цикл (при синтаксисе R похожи на Stata). Если цикл медленный, вы также можете записать его на C++ с пакетом Rcpp.
Я не совсем уверен, что означает фраза «n номеров до». Если это индекс, я, возможно, неправильно его интерпретировал. Вы можете получить последнее значение, вычисленное с полу-спрятан .Last.value
переменной:
> for(i in 1:10) x <- x*.Last.value
> x
[1] 177147
> 3^11
[1] 177147
Если вы используете индекс i
для обозначения элемента, obj
то, очевидно, вы можете обратиться к obj[
я-10 ]
. Существует встроенная функция, которая строит матрицу столбцов, которые «сдвинуты».
x <- 1:10
embed (x, 3)
[,1] [,2] [,3]
[1,] 3 2 1
[2,] 4 3 2
[3,] 5 4 3
[4,] 6 5 4
[5,] 7 6 5
[6,] 8 7 6
[7,] 9 8 7
[8,] 10 9 8
Самый короткий путь:
bysort Vect: ген п = _n
vect=c(1,1,1,2,2,2,2,3,3,3,3,3,4)
n=ave(1:length(vect), vect, FUN = seq_along)
bysort Vect: ген N = _N
ave(1:length(vect), vect, FUN = length)
- 1. Что такое Stata-эквивалент этого макроса SAS?
- 2. R эквивалент Stata 'sumize'?
- 3. R эквивалент Stata *
- 4. есть эквивалент функции COUNTIFS Excel в Stata?
- 5. Эквивалент Stata joinby() на R?
- 6. Что такое R-эквивалент прогноза в lisp?
- 7. Что такое эквивалент R метода pandas .resample()?
- 8. Что такое эквивалент R для Excel IFERROR?
- 9. Что такое эквивалент Python функции предсказания R для линейных моделей?
- 10. Что такое эквивалент numpy для матричной функции R?
- 11. В R Что такое эквивалент функции «mod» в Matlab?
- 12. Что такое эквивалент RegionPlot3D() Mathematica в R?
- 13. Что такое эквивалент R data.chisq $ в python?
- 14. Что такое эквивалент R, эквивалентный LaTeX \ texttt?
- 15. Что такое git-эквивалент «svn update -r»?
- 16. Что такое R эквивалент csaps matlab()
- 17. R эквивалент локальных или глобальных макросов Stata
- 18. Что такое эквивалент функции inet_addr в C#
- 19. Что такое эквивалент Oracle функции Informix `interval`?
- 20. Что такое perl-эквивалент функции preg_quote PHP?
- 21. Что такое PHP-эквивалент функции VBScript CStr?
- 22. Что такое обычный Lisp-эквивалент F-функции?
- 23. Что такое эквивалент Python функции чтения C?
- 24. Что такое эквивалент MATLAB функции NORMSDIST Excel?
- 25. Что такое эквивалент JavaScript функции sprintf PHP?
- 26. Что такое C# эквивалент функции SQL STR?
- 27. Что такое Ruby-эквивалент функции Perl `read()`?
- 28. Что такое эквивалент Фреге функции «взаимодействовать» Хаскелла?
- 29. Что такое imfilter() эквивалент функции nlfilter()?
- 30. Что такое MSSQL-эквивалент функции паролей MySQL?
'variable_x/запаздывание (variable_x, 1) ' – Khashaa
@Khashaa' variable_x/dplyr :: lag (variable_x, 1) ' – Gregor
Строго' _n' не является функцией вообще. Это встроенная переменная, которая является текущим номером наблюдения, текущим значением в текущем порядке сортировки набора данных. Существует дополнительный поворот в том, что под эгидой 'by' _varlist_: это определяется в текущей группе, определяемой комбинациями различных значений _varlist_. (Я не ожидаю, что это будет полностью самоочевидно для пользователей R, которые не используют Stata не более, чем краткое определение некоторого синтаксиса R, как правило, будет обратным.) –