【问题标题】:Group multiple rows in R在R中对多行进行分组
【发布时间】:2021-03-25 09:55:00
【问题描述】:

我有一个包含公司名称和销售数据的 Excel 电子表格。有些公司是相关的,我想将它们组合在同一行下。我希望这一行中的每一列都包含所有相关公司的总和。

我正在使用 R,如果有人可以指导我如何使用,我将不胜感激 开始。

编辑- 数据示例:

Company name Jan sales Jan expenses Jan revenue
Company A 1000 500 500
Company B 2000 500 1500
Company C 3000 400 2600
Company D 4000 100 3900

我想将所有这些公司按名称Company A归为一行。

我希望它看起来像这样:

Company name Jan sales Jan expenses Jan revenue
Company A 10000 1500 8500

【问题讨论】:

标签: r


【解决方案1】:

所以首先你必须使用类似的东西来读取你的 csv 文件:

mycompany <- read.csv("C:/your path here/my_file.csv", sep=";")

要将一些公司组合在一起,您需要一个 id 变量来告诉您哪个公司与哪个其他公司相关。因此,为了进一步帮助您,如果您能向我们提供您的 csv 结构的概述,将会很有帮助。

所以给我们输出:

header(mycompany)

编辑:

要获得上述输出,您可以这样做:

new.table <- c()
new.table <- data.frame(new.table)

for(i in 2:ncol(mycompany)){
  new.table[1,1] <- as.character(mycompany[1,1])
  new.table[1,i] <- sum(mycompany[,i])
}

new.table

【讨论】:

  • 嗨,请看上面的编辑,我添加了一个数据框的例子。再次感谢!
  • 一般来说,您如何知道哪些公司属于同一家公司?这些人之间是否有一个共享的 ID,或者你只是通过他们的名字“知道”它?那你为什么知道 B、C、D 公司属于 A 公司呢?
  • 没有共享ID,这是我刚刚的东西。
  • 你能解释一下你写的代码吗? c()里面应该写什么?我需要改变什么?
  • 所以我刚刚编辑了我上面的帖子。首先将您的 csv 导入 R(我的第一个代码字段)。比直接转到我的最后一个代码字段并运行它(无需更改)
【解决方案2】:

因此,如果您的相关公司存储在一个向量中,比如related,您可以按照以下方式进行操作。

library(dplyr)

data <- read.table(text = "'Company name'   'Jan sales' 'Jan expenses'  'Jan revenue'
'Company A' 1000    500 500
'Company B' 2000    500 1500
'Company C' 3000    400 2600
'Company D' 4000    100 3900", header = T)

> data
  Company.name Jan.sales Jan.expenses Jan.revenue
1    Company A      1000          500         500
2    Company B      2000          500        1500
3    Company C      3000          400        2600
4    Company D      4000          100        3900

related <- c("Company A", "Company B", "Company C", "Company D")

data %>% group_by(Company = ifelse(Company.name %in% related, "related companies", Company.name)) %>% 
  summarise(across(starts_with("Jan"), ~sum(.)))

# A tibble: 1 x 4
  Company           Jan.sales Jan.expenses Jan.revenue
* <chr>                 <int>        <int>       <int>
1 related companies     10000         1500        8500

【讨论】:

    猜你喜欢
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多