我是编码的新手,我尽力找到答案,但没有任何效果。所以我希望你能帮助我: 我有来自96孔板的数据,我设法通过使用Plater包将其转换为整洁的数据。看起来像这样:
> print(PlaterTest)
# A tibble: 96 x 4
Wells `Amino acid position` Mutant Fluorescence
* <chr> <chr> <chr> <int>
1 A01 D46 A 456
2 A02 D46 Y 856
3 A03 D46 R 356
此data.frame包含一些空白值。我想计算平均值并从所有其他值中减去它。所以计算平均值我找到了以下代码:
meanblank <- mean(PlaterTest[PlaterTest$`Amino acid position` == "blank", "Fluorescence"])
但是我得到了:
Warning message:
In mean.default(PlaterTest[PlaterTest$`Amino acid position` == "blank", :
argument is not numeric or logical: returning NA
所以我试图通过使用许多不同的方法将“荧光”列转换为数字类型,最后发现:
PlaterTest$Fluorescence = as.numeric(as.character(PlaterTest$Fluorescence))
所以现在我得到了:
> print(PlaterTest)
# A tibble: 96 x 4
Wells `Amino acid position` Mutant Fluorescence
* <chr> <chr> <chr> <dbl>
1 A01 D46 A 456
2 A02 D46 Y 856
3 A03 D46 R 356
我还找到了具有给定结果的以下代码行:
> sapply(PlaterTest, class)
Wells Amino acid position Mutant Fluorescence
"character" "character" "character" "numeric"
但是我仍然无法使用上面显示的代码计算平均值,因为它仍然给出了相同的错误消息。我认为我对不同的数据类型有一些麻烦。我希望你能帮助我。
答案 0 :(得分:2)
OP的数据集是tibble
而tibble
没有默认drop=TRUE
,只有在选择了一个列时才会删除维度。所以,基本上,它仍然是tibble
PlaterTest[PlaterTest$`Amino acid position` == "blank", "Fluorescence"]
# A tibble: 2 x 1
# Fluorescence
# <int>
#1 856
#2 356
且mean
无法与data.frame
或tibble
合作。根据{{1}}
?mean
x - 一个R对象。目前有数字/逻辑方法 矢量和日期,日期时间和时间间隔对象。复杂的载体 仅允许trim = 0。
所以,它需要一个mean(x, ...)
。因此,选择是提取“荧光”&#39;作为vector
和子集,它基于&#39;空白&#39; “氨基酸位置”中的值&#39;柱
vector
另外,我们可以使用PlaterTest$Fluorescence[PlaterTest$`Amino acid position` == "blank"]
#[1] 856 356
mean(PlaterTest$Fluorescence[PlaterTest$`Amino acid position` == "blank"])
#[1] 606
方法
tidyverse
library(dplyr)
PlaterTest %>%
filter(`Amino acid position` == 'blank') %>%
summarise(Mean = mean(Fluorescence)) %>%
pull(Mean)