R语言DataFrame按类别合并指定行生成新行的实现问题
解决方法
你的代码存在几个问题:
- 索引语法错误:
c=1,2,3,6写法不正确,正确的向量索引应为c(1,2,3,6) - 列名不匹配:原数据的重量列是
kg,你写的total会新增不匹配的列,导致数据结构冲突 - 缺少删除原水果行的步骤
下面提供两种易懂的解决方式:
方法一:分步操作(适合新手理解)
library(tidyverse) # 原始数据 data <- data.frame( "food"= c("Banana", "Orange", "Apple", "Meat", "Fish", "Cherries", "Wheat"), "kg"= c(2,3,1,2,6,4,5) ) # 1. 计算指定水果的kg总和(用食物名称匹配比索引更可靠,避免行顺序变化出错) fruit_total <- sum(data$kg[data$food %in% c("Banana", "Orange", "Apple", "Cherries")]) # 2. 添加新行,确保列名和原数据一致 data <- data %>% add_row(food = "Fruits", kg = fruit_total) # 3. 过滤掉原来的水果行,保留汇总行和其他食物 data <- data %>% filter(!food %in% c("Banana", "Orange", "Apple", "Cherries"))
方法二:链式简洁操作
library(tidyverse) data <- data.frame( "food"= c("Banana", "Orange", "Apple", "Meat", "Fish", "Cherries", "Wheat"), "kg"= c(2,3,1,2,6,4,5) ) data <- data %>% # 先保留非水果行 filter(!food %in% c("Banana", "Orange", "Apple", "Cherries")) %>% # 追加汇总的水果行 add_row( food = "Fruits", kg = sum(data$kg[data$food %in% c("Banana", "Orange", "Apple", "Cherries")]) )
运行后得到的结果:
food kg 1 Meat 2 2 Fish 6 3 Wheat 5 4 Fruits 10
内容的提问来源于stack exchange,提问作者RebecaOdC
相关产品推荐
相关产品推荐

