基于R中以前的数字列向数据帧添加新的字符串列
我有一个数据框架,包含了6种不同种类的400000棵树的数据。每个物种都分配了一个与特定物种对应的数字物种代码。我想添加另一列,列出每棵树的学名。物种代码不是连续的,因为这些数据是根据丰度从163个物种的49万棵树中筛选出来的。下面是一个与我拥有的数据类似的示例:基于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
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)
您几乎可以确定要合并/加入哪些数据。有关如何执行此操作,请参见此问题:。只需确保您还有一个表,其中包含每个人的物种代码和物种名称。是的,您有另一个表,它是物种代码和物种名称的唯一列表吗?我没有一个仅包含物种名称和相应代码的表