我目前有一个可追溯到2000年的物种分类数据的90,000行数据帧。这些行中的许多行(按5,000的顺序)物种名称数据留空,我想使用其他两列的描述符来指定形态名称。这意味着我需要在另外两个因子级别上有条件地将一个因子的级别添加到现有列。数据看起来像:
lepfam lepnotes lepsp
Aididae green/spikes
Aididae greeen/nospikes
Aididae black/orangespots
Nymphalidae Amastus coccinator
输出应如下所示:
lepfam lepnotes lepsp
Aididae green_spikes Aididae morphosp1
Aididae greeen_nospikes Aididae morphosp2
Aididae black_orangespots Aididae morphosp3
Nymphalidae Amastus coccinator
我尝试过以下代码:
file$lepsp[file$lepfam =="Aididae" & file$lepnotes == "green_spikes"]
<- "Aididae morphosp1"
我收到以下错误:
Warning message:
In `[<-.factor`(`*tmp*`, file$lepfam == "Aididae" & file$lepcn == :
invalid factor level, NA generated
然后我找到了以下stackoverflow响应[Replace contents of factor column in R dataframe,其中包含以下解决方案:
levels(iris$Species) <- c(levels(iris$Species), "new.species")
iris$Species[iris$Species == 'virginica'] <- 'new.species'
但这对我没有帮助,因为我必须在代码中列出数千个新的因子级别。是否有一种有效的解决方案来填充新值,从而为现有列生成数千个新因子水平?或者,使用此信息创建一个新列,并将现有的lepsp因子级别与新的lepsp因子级别合并?