R语言学习-Group by的实现

本案例展示了如何使用R语言中的dplyr包进行数据初始化及处理流程。通过循环遍历节点并利用group_by和summarise函数对数据进行聚合操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  library(dplyr)

   node_rel <- data.frame(nodeID = 0,Weight = 0) #初始化
   node_rel <- node_rel[-1,]
   
   #循环node_del
   for (m in 1:length(node_del))
     {
       node_del_tmp <- node_del[m]
       node_rel <- rbind(node_rel,cbind(nodeID=dat1[which(dat1$nodeID1==node_del_tmp),2],Weight=0))   #追加node_del_tmp相连接的结点
     }
   node_rel <- summarise(group_by(node_rel, nodeID),   count = n())  #group by

   View(node_rel)                #直接print显示不全

### ### `group_by` 函数的基本用法 在 R 语言中,`dplyr` 包提供了强大的数据操作功能,其中 `group_by` 函数用于对数据框(dataframe)进行分组操作。它通常与 `summarise`、`mutate` 等函数结合使用,以实现对分组数据的统计计算或变换操作[^1]。 基本语法如下: ```r group_by(data, grouping_variable) ``` 其中 `data` 是一个数据框,`grouping_variable` 是用于分组的一个或多个变量。例如,若有一个名为 `df` 的数据框,包含 `category` 和 `value` 两列,要根据 `category` 进行分组,可以使用以下代码: ```r library(dplyr) df %>% group_by(category) ``` ### ### 分组后进行统计计算 在对数据进行分组后,通常需要计算每个组的统计指标,如均值、标准差、样本数量等。此时可以结合 `summarise` 函数使用。例如,计算每个 `category` 组的均值和标准差: ```r df %>% group_by(category) %>% summarise(mean_value = mean(value), sd_value = sd(value)) ``` 该操作将返回一个新的数据框,其中每一行对应一个 `category` 值,并包含该组的均值和标准差[^2]。 ### ### 分组后进行数据变换 除了统计汇总外,`group_by` 还可用于数据变换操作,例如在每组内进行标准化或计算排序值。此时可以结合 `mutate` 函数使用。例如,计算每组的标准化值(z-score): ```r df %>% group_by(category) %>% mutate(z_score = (value - mean(value)) / sd(value)) ``` 此操作将新增一列 `z_score`,表示每个 `value` 在其组内的标准化值。 ### ### 多列分组 `group_by` 支持基于多个变量进行分组。例如,若数据框中包含 `category1` 和 `category2` 两列,可以按这两个变量的组合进行分组: ```r df %>% group_by(category1, category2) %>% summarise(mean_value = mean(value)) ``` 该查询将根据 `category1` 和 `category2` 的组合对数据进行分组,并计算每组的均值[^3]。 ### ### 结合 `percent_rank` 进行分组排序 在某些场景下,可能需要计算每组内数值的排序百分比。此时可以结合 `mutate` 和 `percent_rank` 函数使用。例如,计算每组内 `value` 的百分位排名: ```r df %>% group_by(category) %>% mutate(rank_percent = percent_rank(value)) ``` 该操作将新增一列 `rank_percent`,表示每个 `value` 在其组内的百分位排名,类似于 SQL 中的 `RANK() OVER (PARTITION BY ...)` 操作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值