【发布时间】:2020-01-10 15:29:15
【问题描述】:
我正在尝试在 R 分组中使用“ifelse”函数,但它不起作用。 我的数据是这样的:
Breed Animal
NOR 1
NOR 1
SWE 1
HOL 2
NOR 2
NOR 3
NOR 3
所以我想创建一个新变量,称为“comp”,用于组合,如果动物的品种始终为 NOR,则为纯种,否则为混合。 data.frame 被称为 NOR,我使用的代码是:
NOR %>%
group_by (animal) %>%%
mutate(comp= ifelse(NOR$breed == "NOR", "purebred","admixed")
但是我有这个错误:错误:列“comp”必须是长度 28(组大小)或 1,而不是 1104。
我需要的输出是:
Breed Animal comp
NOR 1 admixed
NOR 1 admixed
SWE 1 admixed
HOL 2 admixed
NOR 2 admixed
NOR 3 purebred
NOR 3 pubebred
提前感谢您! :)
【问题讨论】:
-
删除
NOR$。使用NOR$breed会为您提供完整的列,但您正尝试按组执行操作,因此您需要该组的列子集,dplyr仅使用breed自动提供。 (这就是为什么错误告诉你你的向量大于组大小) -
除了@IceCreamToucan 所说的之外,每当您使用
%>%链接某些内容时,如果您只是引用其中的一列,则以后不必使用该数据框名称 -
你还有一个错字:
%>%%应该是%>%
标签: r if-statement dplyr