使用R语言筛选分组并合并样本数值

假设有一个数据框df,其中包含一个名为group的列,表示每个样本所属的分组,还有其他若干列为数值列。我们希望筛选出每个分组的前4个样本,并将这些样本的数值进行平均合并。

步骤如下:

  1. **使用unique函数获取所有不重复的分组名称:**rgroups <- unique(df$group)

  2. **使用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)}))

  3. **将新的数据框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个样本的平均值数据。

R语言数据分组筛选与合并:将每个分组中前4个样本数值平均

原文地址: https://www.cveoy.top/t/topic/nCN3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录