我有数据
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 1 0
[3,] 0 1 0
[4,] 0 0 0
[5,] 1 0 0
[6,] 1 0 0
对于每一行,如果第一个值是1,则让第三个值是1;如果第二个值是1,那么让第三个值是2。因此,我得到的数据应该像
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 1 2
[3,] 0 1 2
[4,] 0 0 0
[5,] 1 0 1
[6,] 1 0 1
我尝试在for循环中使用if else语句:
for (i in 1:nrow(data)){
if(data[i,1] == 1){
data[i,3] == 1
} else if(data[i,2] == 1){
data[i,3] == 2
}else{
data[i,3] == 0
}
}
结果第三列仍然是零列。我在哪里做错了?
答案 0 :(得分:1)
您可以使用replace
m[, 3] <- replace(m[, 1], m[, 2] == 1, 2)
m
# V1 V2 V3
#[1,] 0 0 0
#[2,] 0 1 2
#[3,] 0 1 2
#[4,] 0 0 0
#[5,] 1 0 1
#[6,] 1 0 1
数据
m <- structure(c(0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L), .Dim = c(6L, 3L), .Dimnames = list(NULL,
c("V1", "V2", "V3")))