我在向df条件添加列时遇到麻烦。例如,我想根据Var A的值将类值添加到列VarB和VarC。
例如,当VarA等于“a”,“c”和“e”以及“no”等于“b”和“d”时,我想向VarB添加“是”。另外,当VarA等于“a”或“e”时,我想向VarC添加“1”;当VarA等于“b”或“d”时,“2”到VarC;当VarA等于“c”时,“3”到VarC。
VarA
a
b
c
d
e
任何提示?
答案 0 :(得分:3)
也许这可能有用
DF <- data.frame(VarA=letters[1:4]) # this is your data.frame
VarA
1 a
2 b
3 c
4 d
DF$VarB <- ifelse(VarA %in% c('a','c','e'), 'yes', 'no')
DF$VarC <- ifelse(VarA %in% c('a','e'), 1, ifelse(VarA %in% c('b','d'),2,3))
DF
VarA VarB VarC
1 a yes 1
2 b no 2
3 c yes 3
4 d no 2
您也可以使用transform
功能。
DF <- data.frame(VarA=letters[1:4])
transform(DF,
VarB=ifelse(VarA %in% c('a','c','e'), 'yes', 'no'),
VarC=ifelse(VarA %in% c('a','e'), 1, ifelse(VarA %in% c('b','d'),2,3)))
VarA VarB VarC
1 a yes 1
2 b no 2
3 c yes 3
4 d no 2
答案 1 :(得分:1)
按照以下精神做点什么:
cond1 <- data$VarA %in% c("a","c","e")
data$VarB[cond1] <- "yes"
cond2 <- data$VarA %in% c("b","d")
data$VarB[cond2] <- "no"
cond3 <- data$VarA %in% c("a","e")
data$VarC[cond3] <- 1
cond4 <- data$VarA %in% c("b","d")
data$VarC[cond4] <- 2
我会让你自己做最后一个。