我是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个等级,对应于“Euro”中的总和。我希望在“Funktionen”中获得所有相应级别的“欧元”中的所有数字并加以总结,因此我得到135欧元的价值并且可以显示在此预算中用于什么目的的费用。
答案 0 :(得分: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
答案 1 :(得分: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)