【发布时间】:2018-04-30 17:21:18
【问题描述】:
我一直在试图弄清楚如何根据某些标准分配值。
我有一个看起来很简单的数据集:
fish <- data.frame ("method"=c("cryptic", "cryptic", "cryptic",
"quad", "quad", "quad",
"fish",
"1mquad", "1mquad"),
"species"= c("A", "B", "C",
"A", "B", "D",
"A",
"A", "B"),
"cut"=1)
如果一个物种同时具有方法 cryptic 和 quad 或 cryptic 和 1mquad,我想将 cut 的值更改为 0。
我尝试了一些不同的方法,但一直卡住。当我执行 if 语句时,我会收到奇怪的警告。我尝试过的一些事情是用神秘的方式制作一个子集 df
cryptic <- fish [fish$method == "cryptic",]
然后尝试子集
fish$cut [match(fish$species, cryptic$species) & fish$method =="quad"] <- 0
fish$cut [match(fish$species, cryptic$species) & fish$method =="1mquad"] <- 0
但这不起作用。我也尝试过创造条件:
cond3 <- fish$species %in% intersect(fish$species, cryptic$species)
cond4 <- fish$method %in% c ("1mquad", "quad", "cryptic")
并用它做一个 if 语句,但无济于事。此外,在更改为 0 之前,我还有一些其他条件,所以我不能使用 ifelse 语句,因为它会覆盖那些其他条件。有什么建议吗?
【问题讨论】:
标签: r if-statement conditional subset