使用R中的模式重新编码变量

时间:2015-05-06 03:59:06

标签: r stata

我是学习R.的stata用户 我想将以下stata函数转换为R.基本上它的作用是使用带有循环函数的模式的名称重新编码多个变量。

我有这些变量名称:a1cbf a2cbf a3cbf a4cbf ....... a25cbf

Stata语法:

forvalue i=1/25{
  recode a`i'cbf (1=99) (2=88) (3=1), gen(cig`i')
}

这就是用语言表达的意思:每次更换“i'价值从1到25.

1 个答案:

答案 0 :(得分:1)

假设您想要使用不同数字的向量替换变量中的数字。

如果' v1'是原始变量的向量

 v1 <- paste0('a', 1:25, 'cbf')

和对应于&#39; v1&#39;的新数字向量元素是

set.seed(29)
v2 <- sample(100, 25, replace=FALSE)

我们可以使用paste来获取一个新的变量向量,以后可以将其分配给数据集的列名/行名。

paste0('a', v2, 'cbf')

或者如果前缀和后缀部分不相同,那么,

paste0(sub('[0-9]+.*', '', v1), v2, sub('.*[0-9]+', '', v1))
#[1] "a10cbf" "a24cbf" "a11cbf" "a32cbf" "a57cbf" "a9cbf"  "a78cbf" "a81cbf"
#[9] "a12cbf" "a22cbf" "a89cbf" "a35cbf" "a27cbf" "a55cbf" "a16cbf" "a71cbf"
#[17]"a56cbf" "a31cbf" "a72cbf" "a30cbf" "a54cbf" "a49cbf" "a76cbf" "a94cbf"
#[25] "a48cbf"