2016-01-11 70 views
-5

我有以下數據(數據通過reshape2融化)。數據看起來像這樣。數據的名稱是k。如何整合定製功能?

variable  value 
Revenue  23.34 
Revenue  34.44 
Revenue   13 

我寫這段代碼從數據中抽取的第一位和最後一位數字:

require(plyr) 
require(stringr) 
k <- ddply(k, .(variable), transform, 
      first.digit = str_extract(value, "[123456789]"), 
      last.digit = str_extract(value, "[[:digit:]]$")) 

也許我需要嘗試這種方法。確保要求所有的庫。

k_function <- function(data){ 
require(plyr) 
require(stringr) 
ddply(data, .(variable), transform, 
     first.digit = str_extract(value, "[123456789]"), 
     last.digit = str_extract(value, "[[:digit:]]$")) -> k_data 
return(k_data) 
} 

應用數據看起來像這樣的代碼之後:

variable  value first.digit last.digit 
Revenue  23.34  2    4 
Revenue  34.44  3    4 
Revenue  13  1    3 

我怎樣才能納入量身定製的整個過程做出功能。

回答

2

這將工作(你可以瞭解如何編寫函數,例如這裏:http://www.r-bloggers.com/how-to-write-and-debug-an-r-function/):

my_function <- function(data){ 

    ddply(data, .(variable), transform, 
      first.digit = str_extract(value, "[123456789]"), 
      last.digit = str_extract(value, "[[:digit:]]$")) -> new_data 
    return(new_data) 
} 

my_function(k) 
+0

非常感謝。我不明白這部分代碼的作用是什麼 - > new_data和return(new_data)。你能詳細解釋一下嗎? –

+0

你不明白哪部分代碼? – ytk

+0

通過'ddply()'我創建一個新的數據幀,我保存爲一個局部變量'new_data'。函數有這個屬性,它在我們的情況下需要一些值(在我們的例子中是'data')並且返回一個值('new_data')。現在清楚嗎? – Marta