R 组合几个二进制变量

R 组合几个二进制变量,r,R,我有5个变量,var1,var2等,它们都是这样编码的: Factor w/ 2 levels "no","yes": 2 1 1 2 1 2 1 1 1 1 ... 我想把它们合并成一个。到目前为止,我只使用了: comb_drug <- with(dt1,interaction(var1, var2, var2, var4, var5)) 这会让你走上正轨。。。只需将每行“是”值的数量相加: dt$newvar <- apply(dt, 1, function(x) sum(

我有5个变量,
var1
var2
等,它们都是这样编码的:

Factor w/ 2 levels "no","yes": 2 1 1 2 1 2 1 1 1 1 ...
我想把它们合并成一个。到目前为止,我只使用了:

comb_drug <- with(dt1,interaction(var1, var2, var2, var4, var5))

这会让你走上正轨。。。只需将每行“是”值的数量相加:

dt$newvar <- apply(dt, 1, function(x) sum(x == "yes"))
dt$newvar
#  [1] 5 4 2 4 5 2 5 3 2 5

这会让你走上正轨。。。只需将每行“是”值的数量相加:

dt$newvar <- apply(dt, 1, function(x) sum(x == "yes"))
dt$newvar
#  [1] 5 4 2 4 5 2 5 3 2 5

一个可能比
应用(x,1,sum)
rowSums
)稍快的替代方法


dt$nYes一种可能比
应用(x,1,sum)稍快的替代方法
rowSums


dt$nYes如果你从你所有的数据中减去
1
,你会得到0和1,这可以直接解释为真/假,这让软件运动员更高兴:-)。另外,对于T/F的某些向量(或1和0),
sum(myvector)
直接为您提供TRUE的数目。 在这一点上,您甚至可以有一个查找矩阵,如

sum  label
0    allno
1     one_no
2    lessthan4yes
3    lessthan4yes
4    4yes
5    yes

并直接替换为
newvec如果从所有数据中减去
1
,将得到0和1,这可以直接解释为真/假,这会让软件爱好者更高兴:-)。另外,对于T/F的某些向量(或1和0),
sum(myvector)
直接为您提供TRUE的数目。 在这一点上,您甚至可以有一个查找矩阵,如

sum  label
0    allno
1     one_no
2    lessthan4yes
3    lessthan4yes
4    4yes
5    yes
并直接替换为
newvec
dt$nYes <- rep(c('<4','4','all'),times = c(3,1,1))[rowSums(dt=='yes')]
sum  label
0    allno
1     one_no
2    lessthan4yes
3    lessthan4yes
4    4yes
5    yes