R returns 中的重新编码变量无效
Recode variables in R returns invalid
在将其转换为数字后,我正在尝试重新编码该变量:
e18$AntPT <- recode(e18$AntPT, 1 <- 0, 0 <- c(2:10))
但是 returns
Error in 1 <- 0: invalid (do_set) left-hand side to assignment
另外,最终结果应该包括这3部分代码:
e18$AntPT <- as.numeric(e18$Q1501)
e18$AntPT <- recode(e18$AntPT, 1<-1, 0 <- c(2:10))
e18$AntPSDB <- as.numeric(e18$Q1505)
e18$AntPSDB <- recode(e18$AntPSDB, 10<-1, 0 <- c(2:10))
e18$AntPMDB <- as.numeric(e18$Q1502)
e18$AntPMDB <- recode(e18$AntPMDB, 100<-1, 0 <- c(2:10))
我要做的最后一件事是:
e18$Ant_Part <- (e18$AntPT + e18$AntPSDB + e18$AntPMDB)
这个总和的最终结果必须给我数字 0、1、10、11、100、101、110、111 - 其中一个数字让我对我最初的问题有不同的解释。
如果列中还有其他数字并且只想更改特定数字
-在
之前
e18
# AntPT AntPSDB AntPMDB
#1 1 1 100
#2 2 14 1
#3 4 2 2
#4 3 15 105
#5 1 7 24
#6 2 10 7
#7 3 11 8
现在,我们使用 lapply
和 replace
遍历感兴趣的列,将列中的值从 2 到 10
e18[c("AntPT", "AntPSDB", "AntPMDB")] <- lapply(e18[c("AntPT",
"AntPSDB", "AntPMDB")], function(x) replace(x, x %in% 2:10, 0))
以及'AntPSDB'、'AntPMDB'(10, 100)到1
列的具体数字
e18$AntPSDB[e18$AntPSDB == 10] <- 1
e18$AntPMDB[e18$AntPMDB == 100] <- 1
-
之后
e18
# AntPT AntPSDB AntPMDB
#1 1 1 1
#2 0 14 1
#3 0 0 0
#4 0 15 105
#5 1 0 24
#6 0 0 0
#7 0 11 0
然后求和
e18$Ant_Part <- (e18$AntPT + e18$AntPSDB + e18$AntPMDB)
数据
e18 <- data.frame(AntPT = c(1, 2, 4, 3, 1, 2, 3),
AntPSDB = c(1, 14, 2, 15, 7, 10, 11),
AntPMDB = c(100, 1, 2, 105, 24, 7, 8))
在将其转换为数字后,我正在尝试重新编码该变量:
e18$AntPT <- recode(e18$AntPT, 1 <- 0, 0 <- c(2:10))
但是 returns
Error in 1 <- 0: invalid (do_set) left-hand side to assignment
另外,最终结果应该包括这3部分代码:
e18$AntPT <- as.numeric(e18$Q1501)
e18$AntPT <- recode(e18$AntPT, 1<-1, 0 <- c(2:10))
e18$AntPSDB <- as.numeric(e18$Q1505)
e18$AntPSDB <- recode(e18$AntPSDB, 10<-1, 0 <- c(2:10))
e18$AntPMDB <- as.numeric(e18$Q1502)
e18$AntPMDB <- recode(e18$AntPMDB, 100<-1, 0 <- c(2:10))
我要做的最后一件事是:
e18$Ant_Part <- (e18$AntPT + e18$AntPSDB + e18$AntPMDB)
这个总和的最终结果必须给我数字 0、1、10、11、100、101、110、111 - 其中一个数字让我对我最初的问题有不同的解释。
如果列中还有其他数字并且只想更改特定数字
-在
之前e18
# AntPT AntPSDB AntPMDB
#1 1 1 100
#2 2 14 1
#3 4 2 2
#4 3 15 105
#5 1 7 24
#6 2 10 7
#7 3 11 8
现在,我们使用 lapply
和 replace
遍历感兴趣的列,将列中的值从 2 到 10
e18[c("AntPT", "AntPSDB", "AntPMDB")] <- lapply(e18[c("AntPT",
"AntPSDB", "AntPMDB")], function(x) replace(x, x %in% 2:10, 0))
以及'AntPSDB'、'AntPMDB'(10, 100)到1
列的具体数字e18$AntPSDB[e18$AntPSDB == 10] <- 1
e18$AntPMDB[e18$AntPMDB == 100] <- 1
-
之后e18
# AntPT AntPSDB AntPMDB
#1 1 1 1
#2 0 14 1
#3 0 0 0
#4 0 15 105
#5 1 0 24
#6 0 0 0
#7 0 11 0
然后求和
e18$Ant_Part <- (e18$AntPT + e18$AntPSDB + e18$AntPMDB)
数据
e18 <- data.frame(AntPT = c(1, 2, 4, 3, 1, 2, 3),
AntPSDB = c(1, 14, 2, 15, 7, 10, 11),
AntPMDB = c(100, 1, 2, 105, 24, 7, 8))