将条件属性添加到data.frame

时间:2016-02-27 15:33:28

标签: r dataframe

我希望问题正确发布。类似的问题面临here,即使它与预期结果略有不同。 我想创建一个包含10名男性和10名女性的20行数据框:

e6 <- data.frame(20)
e6 <- rep( c("man", "woman"), c(10, 10))
e6
[1] "man"   "man"   "man"   "man"   "man"   "man"   "man"   "man"  
[9] "man"   "man"   "woman" "woman" "woman" "woman" "woman" "woman"
[17] "woman" "woman" "woman" "woman" 

现在我想创建一个列e6$answer,其中有10个人,其中8人说&#34;是&#34;其中2个&#34;不&#34;。在10名女性中间:其中3名说“是”&#34;其中7人说&#34;是&#34;。我尝试使用帖子顶部链接中建议的方法:

e6$answer <- ifelse(e6 == "man", rep( c("yes", "no"), c(8, 2)), 
             rep( c("yes", "no"), c(3, 7)))

不幸的是,我的尝试返回错误。可能我在课上做错了。

Warning message:
In e6$answer <- ifelse(e6 == "man", rep(c("yes", "no"), c(8, 2)),  :
  Coercing LHS to a list

非常感谢您的耐心等待。

1 个答案:

答案 0 :(得分:2)

在您的示例中,e6是字符向量(请参阅class(e6)),而不是数据框。因此,ifelse将其强制转换为列表。试试

e6 <- data.frame(gender = rep( c("man", "woman"), each=10))
e6$answer <- ifelse(e6 == "man", rep( c("yes", "no"), c(8, 2)), 
             rep( c("yes", "no"), c(3, 7)))