【问题标题】:Function to check data values against a .txt file in R在 R 中根据 .txt 文件检查数据值的函数
【发布时间】:2015-07-09 18:05:04
【问题描述】:

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

  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 文件中的最小和最大长度。如果值超出范围,我想要一条错误消息,告诉我哪些行有问题。

我对 R 很陌生,对函数的经验很少,所以非常感谢任何帮助!

【问题讨论】:

  • 我们从哪里开始?你知道如何将文本文件读入数据框吗?这是第一步,我们不知道你是否知道。您应该能够从基本的 R 文档中了解到这一点。
  • 对不起,我应该提到这一点。是的,文本文件已作为名为 ln.list 的数据框读入。
  • 您能否根据示例显示一些预期的输出
  • @akrun 例如,如果文本文件的物种 A 的最小长度设置为 8 毫米,则错误消息将显示如下内容:1322(行号)站点 A B 物种 A 6
  • 请使用编辑选项在您的帖子中更新它

标签: r


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多