RStudio中如何代入坐标数据集计算Vxn并生成新数据框
按公式计算生成含Vxn的新数据框实现方法
计算逻辑拆解
严格匹配给定公式的分组计算规则,所有指标按Circle维度分组统计:
- 计算每组内X列最大值与最小值的差值
- 统计每组对应的观测频次,即该Circle关联的坐标记录总行数
- 用X列的极差除以组内观测频次,得到对应Circle的Vxn值
可直接运行的代码实现
1. 构造原始测试数据集
df <- data.frame( Circle = c("A", "A", "A", "B", "B", "C"), X = c(21, 32, 23, 22, 43, 12), Y = c(8, 17, 32, 4, 12, 4) )
2. 基础R实现(无需额外安装包)
# 按Circle拆分数据逐组计算指标 stats_list <- lapply(split(df, df$Circle), function(sub_set) { x_diff <- max(sub_set$X) - min(sub_set$X) group_freq <- nrow(sub_set) data.frame( Circle = unique(sub_set$Circle), X_range = x_diff, freq = group_freq, Vxn = x_diff / group_freq ) }) # 合并为最终新数据框 new_df <- do.call(rbind, stats_list)
3. Tidyverse实现(逻辑更直观)
需提前通过install.packages("dplyr")安装对应包,再运行代码:
library(dplyr) new_df <- df %>% group_by(Circle) %>% summarise( X_range = max(X) - min(X), freq = n(), Vxn = X_range / freq ) %>% ungroup()
输出结果示例
计算完成后生成的新数据框核心字段如下:
| Circle | X_range | freq | Vxn |
|---|---|---|---|
| A | 11 | 3 | 3.666667 |
| B | 21 | 2 | 10.5 |
| C | 0 | 1 | 0 |
内容的提问来源于stack exchange,提问作者damien。
相关产品推荐
相关产品推荐

