Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将多个变量重新编码为一个新变量会导致奇怪的减法运算_R - Fatal编程技术网

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?