我有問題添加列有條件的df。例如,我想根據Var A的值將列值添加到VarB和VarC列。添加列條件檢查行名
例如,當VarA等於「a」,「c」時,我想向VarB添加'yes'當「e」和「no」等於「b」和「d」時。另外,當VarA等於「a」或「e」時,我想向VarC添加「1」;當VarA等於「b」或「d」時,VarC爲「2」;而當VarA等於「c」時,VarC爲「3」。
VarA
a
b
c
d
e
任何提示?
我有問題添加列有條件的df。例如,我想根據Var A的值將列值添加到VarB和VarC列。添加列條件檢查行名
例如,當VarA等於「a」,「c」時,我想向VarB添加'yes'當「e」和「no」等於「b」和「d」時。另外,當VarA等於「a」或「e」時,我想向VarC添加「1」;當VarA等於「b」或「d」時,VarC爲「2」;而當VarA等於「c」時,VarC爲「3」。
VarA
a
b
c
d
e
任何提示?
做一下下面的精神:
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
,我就不打擾你自己做的最後一個。
您可以避免'cond2'和'cond4'如果你只是做'!cond1'和'!cond3',分別。例如'data $ VarB [!cond1] < - 「no」' –
好吧,但我認爲這是一個普遍的問題,即您提到的好財產可能只是一個巧合。 – mpiktas
也許這可能是有用的
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
完美使用'transform()';) – A5C1D2H2I1M1N2O1R2T1
把你的代碼,這將有助於幫助你 –