2013-12-11 45 views
1

当选择取决于条件时,我在从R中的数据框中删除列时遇到了很多困难。例如,根据性别是男性还是女性,我想删除男性或女性专栏。 Person代表一个数据框。以下是我的代码:基于条件从数据框中删除列

Gender <- "male" 
dd <- subset(person, select = c(-Male)) 
de <- subset(person, select = c(-Female)) 
person1 <- ifelse(Gender=="male", dd, de) 

此代码导致列出数据框中的第一列。数据框的头部在下面。顺便说一下变量dd和de工作正常。只有if else语句可能是因为我的条件在数据框之外。当我在数据帧向量中引入性别时,我得到一个NULL结果。

同样,如果使用下面的代码删除之列,它的工作原理,但我卡住了,如果其他部件

Myvars <- names(person) %in% c("Female") 
DL <- person [! Myvars] 

的数据帧

RoundDownAge Male Female 
54 938202 969252 
54 938202 969252 
54 938202 969252 
54 938202 969252 
54 938202 969252 
54 938202 969252 

谢谢

+3

什么是预期的数据帧? – Ananta

+0

同意@Ananta提出这些问题的最佳方式是告诉我们你有什么,并告诉我们你的期望。 –

+0

预期的数据框将包含两列RoundDownAge和Male。但是,如果性别是女性(请参阅第一行代码),则两列将为RoundDownAge和Female。谢谢 – user3063214

回答

1

这些代码在你那正常吗?

person1 <- subset(person,select=c(ifelse(Gender=='male',-Male,-Female))) 
+0

它完美的作品。谢谢大家 – user3063214

+0

@ user3063214:如果你得到解决你的问题的答案,点击大的复选框接受它作为答案。 –

+0

@ user3063214:谢谢! –