R:用他们的组替换各种值
R: Replace various values by their group
我想重新编码一个向量 x
与他们的组的个人。
set.seed(1)
x<-sample(135,2000,rep=T)
individuals<-1:135
groups<-sample(7,135,rep=T)
我已经试过了,但是如果每个等号的左边都有一个表达式,它似乎不起作用,只有当有一个明确的向量时,例如c(7,12,29,31)
.
x_recod<-car::recode(x,"individuals[groups=='1']=1;individuals[groups=='2']=2;individuals[groups=='3']=3;individuals[groups=='4']=4;individuals[groups=='5']=5;individuals[groups=='6']=6;individuals[groups=='7']=7")
另外我想知道是否有一种方法可以做到这一点而不必提及每个组。
编辑:这个例子的解决方案很简单,因为 x
是一个数字向量,但如果是字符呢?例如
x<-sample(letters,2000,rep=T)
individuals<-letters
groups<-sample(7,26,rep=T)
你可以使用 sapply
.
x.rec <- x
invisible(sapply(groups, function(g) x.rec[groups == g] <<- g))
head(x.rec)
# [1] 6 2 5 7 6 4
您可以使用 x
来子集 groups
。
newx <- groups[x]
验证输出:
head(x)
#[1] 68 129 43 14 51 85
groups[head(x)]
#[1] 6 7 2 3 7 7
head(newx)
#[1] 6 7 2 3 7 7
我想重新编码一个向量 x
与他们的组的个人。
set.seed(1)
x<-sample(135,2000,rep=T)
individuals<-1:135
groups<-sample(7,135,rep=T)
我已经试过了,但是如果每个等号的左边都有一个表达式,它似乎不起作用,只有当有一个明确的向量时,例如c(7,12,29,31)
.
x_recod<-car::recode(x,"individuals[groups=='1']=1;individuals[groups=='2']=2;individuals[groups=='3']=3;individuals[groups=='4']=4;individuals[groups=='5']=5;individuals[groups=='6']=6;individuals[groups=='7']=7")
另外我想知道是否有一种方法可以做到这一点而不必提及每个组。
编辑:这个例子的解决方案很简单,因为 x
是一个数字向量,但如果是字符呢?例如
x<-sample(letters,2000,rep=T)
individuals<-letters
groups<-sample(7,26,rep=T)
你可以使用 sapply
.
x.rec <- x
invisible(sapply(groups, function(g) x.rec[groups == g] <<- g))
head(x.rec)
# [1] 6 2 5 7 6 4
您可以使用 x
来子集 groups
。
newx <- groups[x]
验证输出:
head(x)
#[1] 68 129 43 14 51 85
groups[head(x)]
#[1] 6 7 2 3 7 7
head(newx)
#[1] 6 7 2 3 7 7