我在R中使用一个简单的数据帧,类似于这个:

data <- data.frame(
  "food"= c("Banana", "Orange", "Apple", "Meat", "Fish", "Cherries", "Wheat"),
  "kg"= c(2,3,1,2,6,4,5)
)

我的观点是,我想创建一个新的行,名为"水果",并将"香蕉"、"橙子"、"苹果"和" cherry "的千克值组合在一起(然后我会删除这些,只保留"水果").

我越来越接近一个解决方案一直是这样的try :

library(tidyverse)
data <- data %>% 
  add_row(.data = data.frame(food="Fruits",
                             total=sum(data$kg[c=1,2,3,6])))

# Error message: 'incorrect number of dimensions'

我是R的新手,所以我不知道如何创建一个值来存储我想要添加的行,并将其包含在新行中.

推荐答案

假设我们有两个类别(水果和蛋白质),而"小麦"不在这两个类别中,因此,不会被"总结"(如果你只想对"水果"进行总结,你只需从categories个列表中go 掉Protein个).

library(tibble)
library(tidyr)
library(dplyr)

categories <- list(Fruits = c("Banana", "Orange", "Apple", "Cherries"), 
                   Protein = c("Meat", "Fish"))

enframe(categories) %>% 
  unnest(value) %>% 
  full_join(data, .,  join_by(food == value)) %>% 
  mutate(name = coalesce(name, food)) %>% 
  summarise(food = first(name), kg = sum(kg, na.rm = T), .by = name) %>% 
  select(-name)

#>      food kg
#> 1  Fruits 10
#> 2 Protein  8
#> 3   Wheat  5

创建于2024-03-12,版本为reprex v2.0.2

R相关问答推荐

创建重复删除的唯一数据集组合列表

ggplot 2中的地块底图(basemaps_gglayer()不起作用)

如何在ggplot 2线性图的每个方面显示每个组的误差条?

如何根据组大小应用条件过滤?

整数成随机顺序与约束R?

将向量组合到一个数据集中,并相应地命名行

如何在编辑列时更新可编辑数据表,并使用该表在Shiny中执行连续计算

R Sapply函数产生的值似乎与for循环方法略有不同

是否可以创建一个ggplot与整洁判断的交互作用

汇总数据表中两个特定列条目的值

使用整齐的计算(curl -curl )和杂音

如何通过判断数据框的一列来压缩另一列?

合并后返回列表的数据帧列表

如何在R库GoogleDrive中完全删除预先授权的Google帐户?

如何使这些react 表对象相互独立?

使用不同的定性属性定制主成分分析中点的 colored颜色 和形状

R中时间间隔的大向量与参考时间间隔的相交

R将函数参数传递给ggploy

如何在矩阵图中按标准对数据进行分组以绘制矩阵

如何在R曲线图弹出窗口中更改r和theta标签