0

我在有条件地将列添加到 df 时遇到问题。例如,我想根据 Var A 的值将类值添加到列 VarB 和 VarC。

例如,当 VarA 等于“a”、“c”和“e”时,我想在 VarB 中添加“yes”,当它等于“b”和“d”时,我想添加“no”。另外,当 VarA 等于“a”或“e”时,我想在 VarC 中添加“1”;当 VarA 等于“b”或“d”时,“2”到 VarC;当 VarA 等于“c”时,“3”到 VarC。

VarA
 a     
 b     
 c     
 d     
 e 

有小费吗?

4

2 回答 2

3

Maybe this could be useful

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

You can use transform function as well.

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
于 2012-10-11T13:29:01.610 回答
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

我会让你自己做最后一个。

于 2012-10-11T13:24:34.967 回答