在R

时间:2015-07-09 09:38:30

标签: r

我有一个数据框(raw.data),其中包含调查中采样的多个shell的数据,每个采样的shell都有一行。

  Site     Sample         Species     Length (mm)
Site A          A       Species A              10
Site A          A       Species A              20
Site A          B       Species A               6
Site A          B       Species B              10

我有一个.txt文件,其中包含每个物种的物种名称和预期的最小和最大长度数据。我想编写一个简短的函数来检查raw.data中的长度与每个物种的.txt文件中的Min和Max长度。如果某个值超出范围,我想要一条错误消息,告诉我哪些行有问题。

我是R的新手,对功能的经验很少,所以任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

如果您可以加入数据框,那么简单的逻辑测试应该可以满足您的需求。

Reference <- 
"Species,min,max\n
Species A,0,10 \n
Species B,5,15 \n
Species C,10,20"

Reference <- read.csv(textConnection(Reference),
                      stringsAsFactors = FALSE)

Species <- 
"Site,Sample,Species,Length\n
Site A,A,Species A,10 \n
Site A,A,Species A,20\n
Site A,B,Species A,6\n
Site A,B,Species B,10"

Species <- read.csv(textConnection(Species),
                    stringsAsFactors = FALSE)

library(dplyr)
Species_Ref <- left_join(Species, Reference,
                         by = c("Species" = "Species")) %>%
  mutate(in_range = Length >= min & Length <= max)