R语言 如何计算n个观测值的平均值(同一样本的重复测量)

iyfjxgzm  于 2023-01-18  发布在  其他
关注(0)|答案(2)|浏览(231)

我有一个大的 Dataframe 类似于这个:

df <- data.frame(sample=c('s1a', 's1b', 's2a', 's2b', 's3a', 's3b'), Mg=1:6, P=7:12, K=3:8)

其中,“a”和“B”是相同样本的重复测量值。我想获得一个新的df,其中包含每个样本(s1、s2、s3)每次测量值的平均值,并获得如下内容:

df_new <- data.frame(sample=c('s1', 's2', etc..), Mg=1.5, etc.., P=7.5, etc.., K=3.5, etc)
5rgfhyps

5rgfhyps1#

可以使用aggregatesub删除ab

aggregate(. ~ sample, transform(df, sample = sub("[ab]$", "", sample)), mean)
#aggregate(. ~ sample, within(df, sample <- sub("[ab]$", "", sample)), mean) #Alternative
#aggregate(df[-1], list(sample=sub("[ab]$", "", df[,1])), mean) #Alternative
#  sample  Mg    P   K
#1     s1 1.5  7.5 3.5
#2     s2 3.5  9.5 5.5
#3     s3 5.5 11.5 7.5
h22fl7wq

h22fl7wq2#

library(tidyverse) 

df %>% 
  group_by(sample = str_extract(sample, ".{0,2}")) %>% 
  summarise(across(everything(), mean))

# A tibble: 3 × 4
  sample    Mg     P     K
  <chr>  <dbl> <dbl> <dbl>
1 s1       1.5   7.5   3.5
2 s2       3.5   9.5   5.5
3 s3       5.5  11.5   7.5

相关问题