2013-03-18 24 views
0

我對R很新,有一個代表預算的數據文件。我想總結目的欄中的所有價目標。在csv中閱讀時,該目的會自動考慮。但是,我怎樣才能將正確的價格分配給文件中的多個計數目標並總結出來呢?如何總結屬於另一列中一個因子的一個CSV列中的數字?

我從這個鏈接文件: http://www.berlin.de/imperia/md/content/senatsverwaltungen/finanzen/haushalt/ansatzn2013.xls?download.html

我打開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歐元的數值,並可以顯示在此預算中用於什麼用途的費用。

+1

請您的情況可重複的,即我們提供的數據和模仿您的情況需要的代碼。有關如何執行此操作的更多提示,請參閱http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example。 – EDi 2013-03-18 10:18:41

+1

歡迎來到Stack Overflow!請提供樣本數據或可重複的示例,以便這裏的好人可以更好地幫助您。請參閱http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – 2013-03-18 10:18:55

+0

感謝您的耐心等待,我希望現在變得更加清晰。 – r4gni 2013-03-18 10:45:21

回答

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 
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) 
+0

不幸的是我得到這個錯誤: 'Fehler在model.frame.default(公式=歐元〜ausgaben $的Funktion): Variablenlängen信德unterschiedlich(gefunden獻給 'ausgaben $的Funktion')' – r4gni 2013-03-18 14:06:59

+0

@ r4gni什麼是'輸出STR(歐元)'? – 2013-03-18 14:29:20

相關問題