R函数在相同的表和列中查找值,但不同的值
我有一个表格(在Spotfire中使用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*"),
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执行暂停。谢谢你的帮助!在此添加代码:请添加一个更复杂的示例,以便更好地反映您的真实数据。