R 基于其他分类值添加一列因子

R 基于其他分类值添加一列因子,r,loops,R,Loops,我有一个庞大的数据集,我想根据另一个因子为每个值添加一个因子。目前,我的数据如下所示: Type Value 1 Wild 68.51 2 Wild 91.94 3 Captive 72.58 4 Hybrid 85.38 但我想添加另一列因素-{澳大利亚、哥斯达黎加、巴西},这是基于动物是野生的、圈养的还是杂交的。然后,数据框应如下所示: Type Value Status 1 Wild

我有一个庞大的数据集,我想根据另一个因子为每个值添加一个因子。目前,我的数据如下所示:

     Type      Value
 1   Wild      68.51
 2   Wild      91.94
 3   Captive   72.58
 4   Hybrid    85.38
但我想添加另一列因素-{澳大利亚、哥斯达黎加、巴西},这是基于动物是野生的、圈养的还是杂交的。然后,数据框应如下所示:

     Type      Value    Status
 1   Wild      68.51    Costa Rica
 2   Wild      91.94    Costa Rica
 3   Captive   72.58    Australia
 4   Hybrid    85.38    Brazil 

当使用
dplyr::case\u时,使用类似这样的方法

library(dplyr);
df %>%
    mutate(Status = case_when(
        Type == "Wild" ~ "Costa Rica",
        Type == "Captive" ~ "Australia",
        Type == "Hybrid" ~ "Brazil"));
#     Type Value     Status
#1    Wild 68.51 Costa Rica
#2    Wild 91.94 Costa Rica
#3 Captive 72.58  Australia
#4  Hybrid 85.38     Brazil

样本数据
dfA
base R
选项将创建一个命名向量作为键/值对,并使用该向量匹配列“Type”

df$Status <- setNames( c('Costa Rica', 'Australia', 'Brazil'), 
            c('Wild', 'Captive', 'Hybrid'))[as.character(df$Type)]
df
#      Type Value     Status
#1    Wild 68.51 Costa Rica
#2    Wild 91.94 Costa Rica
#3 Captive 72.58  Australia
#4  Hybrid 85.38     Brazil

df$Status无忧@geogeglen;您可以通过在解决方案旁边设置复选标记来结束问题。
df$Status <- setNames( c('Costa Rica', 'Australia', 'Brazil'), 
            c('Wild', 'Captive', 'Hybrid'))[as.character(df$Type)]
df
#      Type Value     Status
#1    Wild 68.51 Costa Rica
#2    Wild 91.94 Costa Rica
#3 Captive 72.58  Australia
#4  Hybrid 85.38     Brazil