在查看同事的Stata代码时,我遇到了expand
命令。
我真的很想能够在我自己的R代码中做同样的事情。
基本上expand
重复数据集n次,但可以选择创建一个新变量,如果观察最初出现则为0
在数据集中,如果观察结果重复,则为1。
有人知道在R中实现这个的快速方法吗?或者是编写我自己的函数的情况?
答案 0 :(得分:2)
rep_r<-function(x,n){if(n<=1){rep(x,times=1)}else{rep(x,times=n)}}
expand_r<-function(x,n){
Reduce(function(x,y)
{c(x,y)},mapply(rep_r,x,n))
}
expand_r(c(2,3,4,1,5),c(-1,0,1,2,3))
#[1] 2 3 4 1 1 5 5 5
编辑:感谢 @nicola 的建议,上述功能可以通过以下单线程实现。
expand_r<-function(x,n) rep(x,replace(n,n<1,1))
#>expand_r(c(2,3,4,1,5),c(-1,0,1,2,3))
#[1] 2 3 4 1 1 5 5 5