我正在重组一个物种名称的数据集.它有一个带有拉丁名称的列和具有普通名称的列(如果可用).我想制作第3列,在可用时给出琐碎的名称,否则为拉丁名称.琐碎的名字和拉丁名字都属于因子级.我试过if-loop:
if(art2$trivname==""){
art2$artname=trivname
}else{
art2$artname=latname
}
Run Code Online (Sandbox Code Playgroud)
它给了我正确的trivnames,但只在提供拉丁名字时给出了NA.
当我使用ifelse时,我只会得到数字.
一如既往,所有帮助赞赏:)
我需要在我的数据框的一列中将某些数值设置为零,如果在另一列中它们具有某个因子级别.
我的数据框df看起来像:
Items Store.Type
5 A
4 B
3 C
6 D
3 B
7 E
Run Code Online (Sandbox Code Playgroud)
我想要做的是使Items = 0,对于Store.Type ="A"或"C"的所有行
我对R很新,但想到这将是"If Store.Type A then Items < - 0"形式的条件语句(然后重复Store.Type C),但我不明白?"if"一页.我试过了:
df$ItemsFIXED <- with(df, if(Store.Type == "A")Items <-0)
Run Code Online (Sandbox Code Playgroud)
并收到警告信息:
Warning message:
In if (Store.Type2 == "Chain - Brand") Total.generic.items <- 0 :
the condition has length > 1 and only the first element will be used`
Run Code Online (Sandbox Code Playgroud)
所以我在这里注意到以下内容:
if是一个控制流语句,将单个逻辑值作为参数ifelse是一个矢量化函数,以向量作为其所有参数.
因此,想象我需要ifelse完成整个列并能够理解?ifelse页面,我试图做"如果Store.Type A然后项目< - …