R语言数据分组筛选与合并:将每个分组中前4个样本数值平均
使用R语言筛选分组并合并样本数值
假设有一个数据框df,其中包含一个名为group的列,表示每个样本所属的分组,还有其他若干列为数值列。我们希望筛选出每个分组的前4个样本,并将这些样本的数值进行平均合并。
步骤如下:
-
**使用
unique函数获取所有不重复的分组名称:**rgroups <- unique(df$group) -
**使用
lapply函数对每个分组进行操作,将每个分组中的前4个样本合并为一行,并计算每列的均值:**rnew_df <- do.call(rbind, lapply(groups, function(g) { tmp_df <- df[df$group == g, ] n <- nrow(tmp_df) if (n > 4) { n <- 4 tmp_df <- tmp_df[1:n, ] } rowMeans(tmp_df)})) -
**将新的数据框
new_df与原数据框df合并,以group列为键:**rresult_df <- merge(df, new_df, by = 'group')
代码解释:
lapply(groups, function(g) {...}):对每个分组g进行操作。*tmp_df <- df[df$group == g, ]:筛选出属于当前分组g的所有样本。*n <- nrow(tmp_df):获取当前分组的样本数量。*if (n > 4) { n <- 4; tmp_df <- tmp_df[1:n, ] }:如果分组样本数量超过4个,则只保留前4个样本。*rowMeans(tmp_df):计算每个样本数值列的均值。*do.call(rbind, ...):将所有分组的平均值数据合并成一个新的数据框new_df。*merge(df, new_df, by = 'group'):将原数据框df与平均值数据框new_df按照group列进行合并。
**最终结果result_df将包含所有样本信息,以及每个分组前4个样本的平均值数据。
原文地址: https://www.cveoy.top/t/topic/nCN3 著作权归作者所有。请勿转载和采集!