R 将多个变量重新编码为一个新变量会导致奇怪的减法运算
我有几个二分法变量,我想重新编码成一个新的。但我这样做会导致错误的价值观。只有最后一个值是正确的,其他值中缺少几个值R 将多个变量重新编码为一个新变量会导致奇怪的减法运算,r,R,我有几个二分法变量,我想重新编码成一个新的。但我这样做会导致错误的价值观。只有最后一个值是正确的,其他值中缺少几个值 set.seed(1) id <- 1:1000 v1 <- rbinom(1000, 1, 0.05) v2 <- rbinom(1000, 1, 0.1) v3 <- rbinom(1000, 1, 0.15) DF <- data.frame(id, v1, v2, v3) table(DF$v1) # n = 53 table(DF$v2)
set.seed(1)
id <- 1:1000
v1 <- rbinom(1000, 1, 0.05)
v2 <- rbinom(1000, 1, 0.1)
v3 <- rbinom(1000, 1, 0.15)
DF <- data.frame(id, v1, v2, v3)
table(DF$v1) # n = 53
table(DF$v2) # n = 102
table(DF$v3) # n = 154
DF$v_sum <- 0
DF$v_sum[DF$v1 == 1] <- 1
DF$v_sum[DF$v2 == 1] <- 2
DF$v_sum[DF$v3 == 1] <- 3
table(DF$v_sum) # 1 = 43 instead of 53, 2 ist 89 instead of 102 and 3 = 154 is correct
set.seed(1)
id原因是v1
、v2
和v3
中的值1相互独立,这意味着一行中可能有多个1
sum(rowSums(DF[-1]) > 1)
#[1] 20
从上面我们可以看到,在20行中,一行中有不止一个1,因此当您运行第2行时(DF$v_sum[DF$v2==1])谢谢您的回答。我明白了问题,但如何正确处理它?@Schillerlocke如果一行中有两个1,您想做什么?或者一行中根本不应该有两个1?