R函数在相同的表和列中查找值,但不同的值

R函数在相同的表和列中查找值,但不同的值,r,spotfire,chemistry,R,Spotfire,Chemistry,我有一个表格(在Spotfire中使用R),我试图根据同一表格中的数据确定调整后的峰面积。下面是这个表的一个例子 df <- data.frame(Sample_Name = c("Smpl 1", "Smpl 1", "Smpl 2", "Smpl 2"), Peak_Area = c(100, 101, 50, 51), Analyte = c("Asn","Asn*","Leu","Leu*"),

我有一个表格(在Spotfire中使用R),我试图根据同一表格中的数据确定调整后的峰面积。下面是这个表的一个例子

df <- data.frame(Sample_Name = c("Smpl 1", "Smpl 1", "Smpl 2", "Smpl 2"), 
                 Peak_Area = c(100, 101, 50, 51),
                 Analyte = c("Asn","Asn*","Leu","Leu*"),
                 Int_Std = c("Asn*","","Leu*",""))
df您可以尝试:

library(dplyr)

df %>%
  mutate_if(is.factor, as.character) %>%
  group_by(`Sample Name`) %>%
  mutate(
    `Adjusted Peak` = if (any(Analyte %in% `Int Std`)) `Peak Area`[!Analyte %in% `Int Std`] / `Peak Area`[Analyte %in% `Int Std`] else NA_real_
  )
输出:

# A tibble: 4 x 5
# Groups:   Sample Name [2]
  `Sample Name` `Peak Area` Analyte `Int Std` `Adjusted Peak`
  <chr>               <dbl> <chr>   <chr>               <dbl>
1 Smpl 1                100 Asn     Asn*                0.990
2 Smpl 1                101 Asn*    ""                  0.990
3 Smpl 2                 50 Leu     Leu*                0.980
4 Smpl 2                 51 Leu*    ""                  0.980
#一个tible:4 x 5
#分组:样本名称[2]
`样品名称``峰面积``分析物``国际标准``调整峰`
1 Smpl 1100 Asn Asn*0.990
2 Smpl 1 101 Asn*“0.990
3 Smpl 2 50 Leu Leu*0.980
4 Smpl 2 51 Leu*“0.980

我想这里的大多数人都不熟悉您正在调查的问题。你能把它转换成编程语言吗?这是否意味着要将第二个值除以每个ID的第一个值?@tmfmnk正确,我要查看每一行。如果它同时具有“Analyte”和“Int Std”字段值,我希望它找到与相同的“样本名称”匹配的另一行,其中“Analyte”=“Int Std”,并将原始行“Peak Area”值除以找到的行“Peak Area”值(100/101)。如果可以提供更大的样本数据集,可能会更好。我是否正确地假设
氨基酸*
总是意味着内标物?@Dunios正确,asterix捐赠内标物。也许我可以把一个更大的集合放在一起。我得到了一个错误。错误:列
Adjusted_Peak
的长度必须为4(组大小)或1,而不是2执行暂停。谢谢你的帮助!在此添加代码:请添加一个更复杂的示例,以便更好地反映您的真实数据。