【发布时间】:2020-05-27 08:20:03
【问题描述】:
我想在数据框中创建一个新列,其中数据框的单元格将取决于条件。这是一些可重现的代码:
a <- c("Boy","Girl","Dog","Cat")
b <- c("1","2","3","4")
df <- data.frame(a,b)
if(df$a=="Boy"|df$b=="Girl"){
df$Type <- "Human"
}
else(
df$Type <- "Animal"
)
# This is what I would like to achieve :
df$Type <- c("Human","Human","Animal","Animal")
但是在执行条件时,这是我得到的错误消息:
Warning message:
In if (df$a == "Boy" | df$b == "Girl") { :
condition has a length > 1 only the first element is used
【问题讨论】:
-
使用
df$a %in% c("Boy", "Girl")而不是| -
更像
df$Type <- ifelse(df$a %in% c("Boy", "Girl"), "Human","Animal") -
df$Type <- ifelse(df$a == "Boy" | df$b == "Girl", "Human", "Animal")。但请注意,您正在检查b列中的"Girl",这与您的数据不匹配。 -
当输入 "if(df$a %in% c("Boy", "Girl")){ df$Type 1
-
@Axeman 是的,对不起,我的意思是 df$a == "Girl
标签: r dataframe conditional-statements