根据数据框中的两个因素替换现有列中的空白

时间:2017-05-29 18:14:29

标签: r

我目前有一个可追溯到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因子级别合并?

0 个答案:

没有答案