R中的此For循环是否存在问题?

时间:2019-02-18 23:37:29

标签: r

我尝试使用R中的此For循环创建一个从电子表格中的7列接收数据的数据库,但是它不起作用。

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    Hello world!
  </body>
</html>

'a'正在创建从电子表格的第一列接收数据的列。 “ b”正在接收第二至第六列的数据。 “ Dados”正在创建数据框。 “ RESUMOVEICULO”将所有内容组合在一起

我的最终目标是对第一列中的所有名称进行分组,并对所有其他列中的值求和。循环代码正确吗?如果是这样,我该如何解决?

这是表格的外观:

SalesTable

谢谢!

编辑:我设法用此代码对其进行了修复

for (n in Base[2:6]){
  a <- Base$Fenabrave
  b <- n
  Dados = data.frame(a=a, b=b)
  RESUMOVEICULO <- as.data.frame(summaryBy(b~a, data=Dados, FUN=c(sum)))
}

错误似乎是由于列是用数字命名的,在我用字母替换它们后,谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您想要做的是将数据从“宽”(列中的年)转换为“长”(一列用于年,另一列用于销售)。然后您可以分组和求和。

您可以使用tidyr::gather()dplyr::group_by()dplyr::summarise()。像这样:

library(dplyr)
library(tidyr)

Base %>%
  gather(Year, Sales, -Fenabrave) %>%
  group_by(Fenabrave) %>%
  summarise(Total = sum(Sales))