基于R中以前的数字列向数据帧添加新的字符串列

基于R中以前的数字列向数据帧添加新的字符串列,r,string,dataframe,plyr,data-manipulation,R,String,Dataframe,Plyr,Data Manipulation,我有一个数据框架,包含了6种不同种类的400000棵树的数据。每个物种都分配了一个与特定物种对应的数字物种代码。我想添加另一列,列出每棵树的学名。物种代码不是连续的,因为这些数据是根据丰度从163个物种的49万棵树中筛选出来的。下面是一个与我拥有的数据类似的示例: Index Age Species_code 0 45 14 1 47 32 2 14 62 3 78 126 4 40

我有一个数据框架,包含了6种不同种类的400000棵树的数据。每个物种都分配了一个与特定物种对应的数字物种代码。我想添加另一列,列出每棵树的学名。物种代码不是连续的,因为这些数据是根据丰度从163个物种的49万棵树中筛选出来的。下面是一个与我拥有的数据类似的示例:

Index    Age    Species_code
0        45     14
1        47     32
2        14     62
3        78     126
4        40     14
5        38     17 
6        28     47
下面是我想了解的一个例子:

Index    Age    Species_code    Species
0        45     14              Licania_heteromorpha
1        47     32              Pouteria_reticulata
2        14     62              Chrysophyllum_cuneifolium
3        78     126             Eperua_falcata
4        40     14              Licania_heteromorpha
5        38     17              Simaba_cedron
6        28     47              Sterculia_pruriens
我一直在尝试按照

if (Species_code == 14)
{
}

但是,这在输出中提供了
TRUE
FALSE

您可能需要使用
ifelse()
函数

您可能还想使用:

my_names <- numeric()
my_names[47] <- "Licania_heteromorpha"
my_names[63] <- "Chrysophyllum_cuneifolium"
...
df$Species <- names[df$Species_code]

my_name由于您的问题只有6个方面,您可以这样做:

df$Species = NULL

df$Species[df$Species_code == 14] = 'Licania_heteromorpha'
df$Species[df$Species_code == 32] = 'Pouteria_reticulata'
.....

一种解决方案是在
时使用
mutate
case\u
如果您知道哪些数字对应于哪些物种,我已经填写了其中的一些,这为后续代码提供了依据:

library(tidyverse)
x <-"
  Index    Age    Species_code
0        45     14
1        47     32
2        14     62
3        78     126
4        40     14
5        38     17 
6        28     47"
y <- read.table(text = x, header = TRUE)
y <- y %>% 
  mutate(species = case_when(Species_code == 14 ~ "Licania_heteromorpha",
                             Species_code == 32 ~ "Pouteria_reticulata",
                             Species_code == 62 ~"Chrysophyllum_cuneifolium"))   #etc...
y
#   Index Age Species_code                   species
# 1     0  45           14      Licania_heteromorpha
# 2     1  47           32       Pouteria_reticulata
# 3     2  14           62 Chrysophyllum_cuneifolium
# 4     3  78          126                      <NA>
# 5     4  40           14      Licania_heteromorpha
# 6     5  38           17                      <NA>
# 7     6  28           47                      <NA>
库(tidyverse)

您几乎可以确定要合并/加入哪些数据。有关如何执行此操作,请参见此问题:。只需确保您还有一个表,其中包含每个人的物种代码和物种名称。是的,您有另一个表,它是物种代码和物种名称的唯一列表吗?我没有一个仅包含物种名称和相应代码的表