我有一个包含许多变量的数据框。这里是我到目前为止缩短版:将NA分配给列表中的值
n_20010_0_0 <- c(1,2,3,4)
n_20010_0_1 <- c(0, -2, NA, 4)
n_20010_0_2 <- c(3, 0, -7, 2)
x <- data.frame (n_20010_0_0, n_20010_0_1, n_20010_0_2)
我创建的返回是否有一个1变量列表中的一个新变量:
MotherIllness0 <- paste("n_20010_0_", 0:2, sep = "")
x$MotherCAD_0_0 <- apply(x, 1, function(x) as.integer(any(x[MotherIllness0] == 1, na.rm = TRUE)))
我想保持NAs为0,但我也想重新编码它,以便如果有-7,新的值是NA。 这是我试过和它不工作:
x$MotherCAD_0_0[MotherIllness0 == -7] <- NA
你的意思是“如果x中的列包含-7,那么在MotherCAD_0_0中的结果应该是NA?” –
你的问题并不难。只有你能清楚地表达自己。 – Masoud
你可以做'x $ MotherCAD_0_0 [rowSums(x [,MotherIllness0] == - 7,na.rm = T)> = 1] = NA'。 – Lamia