0

我对 R 很陌生,并且有一个代表预算的数据文件。我想在目的栏中总结所有价格标签用于一个目的。在读取 csv 时,该目的会自动考虑在内。但是,如何将正确的价格分配给文件中包含多个计数的目的并将它们汇总?

我从这个链接得到了文件: http ://www.berlin.de/imperia/md/content/senatsverwaltungen/finanzen/haushalt/ansatzn2013.xls?download.html

我在 Open Office 中打开它,导出 .csv 文件并将其命名为 ausgaben.csv。

> ausgaben <- read.csv("ausgaben.csv")
> str(ausgaben)
'data.frame':   15895 obs. of  8 variables:
 $ Bereich         : Factor w/ 13 levels "(30) Senatsverwaltungen",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Einzelplan      : Factor w/ 28 levels "(01) Abgeordnetenhaus",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Kapitel         : Factor w/ 270 levels "(0100) Abgeordnetenhaus",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Titelart        : Factor w/ 1 level "Ausgaben": 1 1 1 1 1 1 1 1 1 1 ...
 $ Titel           : int  41101 41103 42201 42701 42801 42811 42821 44100 44304 44379 ...
 $ Titelbezeichnung: Factor w/ 1286 levels "Abdeckung von Geldverlusten",..: 57 973 182 67 262 257 95 127 136 797 ...
 $ Funktion        : Factor w/ 135 levels "(011) Politische Führung",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Euro            : Factor w/ 2909 levels "-1.083,0","-1.295,0",..: 539 2226 1052 1167 1983 1111 1575 2749 1188 1167 ...

在“Funktionen”中有 135 个级别,对应于“欧元”中的总和。我想在“Funktionen”中获取所有相应级别的“Euro”中的所有数字并将它们相加,因此我得到 135 欧元值,并且可以显示在此预算中用于什么目的的花费。

4

2 回答 2

1

这可以通过 plyr:::ddply 或许多其他函数(ave、tapply 等)来完成。我认为“欧元”不应该是一个因素,而是数字 - 所以请在尝试汇总之前解决这个问题。

由于我们没有您的数据,这里是一个玩具示例:

set.seed(1234)
df <- data.frame(fac = sample(LETTERS[1:3], 50, replace = TRUE),
                 x = runif(50))

require(plyr)
ddply(df, .(fac), summarise, 
      sum_x = sum(x))
#   fac    sum_x
1   A 7.938613
2   B 6.692007
3   C 5.645078
于 2013-03-18T10:59:37.323 回答
0

您可以使用包读取xls文件gdata

library(gdata)
ausgaben <- read.xls("ansatzn2013.xls")

首先,您需要将列中的值Ansatz.2013.inkl..Nachtrag.in.Tsd..EUR从因子转换为数字:

Euro <- as.character(ausgaben$Ansatz.2013.inkl..Nachtrag.in.Tsd..EUR)
Euro <- as.numeric(sub(",", "", Euro))

然后,您可以使用以下函数计算总和aggregate

aggregate(Euro ~ ausgaben$Funktion, FUN = sum)
于 2013-03-18T11:19:58.077 回答