R 组合几个二进制变量
我有5个变量,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(
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