在R中创建新类别并统计数据的实现方法咨询
用R语言实现数据分组汇总需求
当然可以搞定!作为R语言新手,咱们一步步拆解这个需求,轻松完成数据转换~
第一步:构建原始数据框
首先咱们把你给出的原始数据整理成R能识别的数据框格式:
# 创建原始数据框 df <- data.frame( Product = c("Beef", "Chicken.", "Panado.", "Disprin."), Price = c("$5", "$10", "$2", "$3"), stringsAsFactors = FALSE )
第二步:清理价格列
原始的Price列带$符号,属于字符类型,没法直接求和,所以先把$去掉并转为数值:
# 去掉$符号并转为数值 df$Price_num <- as.numeric(sub("\\$", "", df$Price))
第三步:添加类别标签
根据产品类型,给每个条目标记Food.或Medicine.类别:
# 标记产品类别 df$Category <- ifelse(df$Product %in% c("Beef", "Chicken."), "Food.", "Medicine.")
第四步:分组汇总(两种方法可选)
方法1:使用dplyr包(tidyverse风格,更直观)
如果你还没装dplyr包,先运行install.packages("dplyr")安装,然后:
library(dplyr) # 按类别分组,计算总价格和产品数量 result <- df %>% group_by(Category) %>% summarise( Price = paste0("$", sum(Price_num)), # 计算总价并重新加上$符号 Count = n() # 统计每组的产品数量 ) %>% rename(Product. = Category) # 修改列名匹配你想要的格式 # 查看结果 print(result)
方法2:使用基础R(无需额外安装包)
如果不想加载第三方包,用基础R的aggregate函数也能实现:
# 分组计算汇总值 agg_result <- aggregate(Price_num ~ Category, data = df, FUN = function(x) { list(Price = paste0("$", sum(x)), Count = length(x)) }) # 整理成目标格式的数据框 final_result <- do.call(data.frame, agg_result) colnames(final_result) <- c("Product.", "Price", "Count") # 查看结果 print(final_result)
运行任意一种方法后,你都会得到想要的输出格式:
Product. Price Count 1 Food. $15 2 2 Medicine. $5 2
内容的提问来源于stack exchange,提问作者Julius Okiror
相关产品推荐
相关产品推荐

