You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:如何按小数点后百分位分组求和并导出CSV文件

R实现按Ratio百分位分组求和并导出CSV

需求说明

现有包含两列的DataFrame:

  • Ratio:数值型列,保留三位小数
  • Intensity:对应Ratio的测量值

示例原始数据:

Ratio Intensity
1  0.000  1387.785
2  0.001  1325.254
3  0.003  1307.926
4  0.004  1286.817
5  0.006  1276.197
6  0.007  1251.381
7  0.008  1249.394
8  0.010  1251.923
9  0.011  1263.183
10 0.013  1265.272
11 0.014  1303.354
12 0.015  1336.920
13 0.017  1362.173
14 0.018  1395.946

需要实现:按Ratio的小数点后百分位(即保留两位小数后的数值)分组,对每组的Intensity求和,最终导出结果为CSV文件。

解决方案

方法1:使用dplyr包(简洁高效)

若未安装dplyr包,先执行install.packages("dplyr")完成安装。

# 1. 读取原始数据(替换为你的输入文件路径)
df <- read.csv("your_input.csv")

# 2. 分组求和处理
library(dplyr)
result_df <- df %>%
  # 生成保留两位小数的分组键
  mutate(grouped_ratio = round(Ratio, 2)) %>%
  # 按分组键聚合,求和Intensity
  group_by(grouped_ratio) %>%
  summarize(Intensity = sum(Intensity)) %>%
  # 将分组列名改回Ratio
  rename(Ratio = grouped_ratio) %>%
  # 取消分组状态(避免后续操作警告)
  ungroup()

# 3. 导出结果到CSV(替换为你的输出文件路径)
write.csv(result_df, "grouped_sum_result.csv", row.names = FALSE)

方法2:基础R实现(无需额外包)

如果不想加载第三方包,可使用基础R函数完成:

# 1. 读取原始数据
df <- read.csv("your_input.csv")

# 2. 生成分组键并求和
df$grouped_ratio <- round(df$Ratio, 2)
result_df <- aggregate(Intensity ~ grouped_ratio, data = df, FUN = sum)
# 修改分组列名
colnames(result_df)[1] <- "Ratio"

# 3. 导出CSV
write.csv(result_df, "grouped_sum_result.csv", row.names = FALSE)

注意事项

  • 若需要严格截断两位小数(而非四舍五入,比如将0.005保留为0.00),可将round(Ratio, 2)替换为floor(Ratio * 100)/100或trunc(Ratio * 100)/100,根据实际需求选择。

内容的提问来源于stack exchange,提问作者Jessie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:44:55