2012-08-10 44 views
0

在R中,我想找到一種方法來使用下面的數學公式和.csv文件來編寫for循環。如何寫一個for循環來計算在R中使用數學方程?

下面是一個顯示.csv文件中兩行的示例。

6/27/2010 8:45 131.04 
6/27/2010 9:00 111.11 

第二列是在以下等式中x

http://i.stack.imgur.com/inOKV.jpg

我需要幫助寫上面的方程和一個for循環,.csv文件隨負載變化寫道。

+2

您可以讀取CSV爲R,像'X = read.csv(」 pathtofile「)'。如果是這樣,你可以添加dput(head(X))到你的問題嗎? – Seth 2012-08-10 18:31:05

+0

是的,我有代碼,但確實想發佈,因爲我知道它是完全錯誤的。 dput(head(X))做什麼?我搜索,它是一個debian軟件包上傳工具?我很困惑。 – 2012-08-10 20:16:23

+0

'dput'是一個R函數,和'head'一樣。使用'?function_name'獲取該函數的文檔,例如'?head'。 – 2012-08-10 21:07:32

回答

4

要獲得L_var一定組數字,我相信這會工作:

l_var = sd(x)/mean(x) 

其中x是號碼的載體。接下來我們把它包在一個函數:

l_var = function(x) sd(x)/mean(x) 
outcome = l_var(input) 

其中input是數字向量,並outcome數學公式的結果。

如果您的時間戳列的類別爲POSIXlt,則可以使用strftime創建一個因子列,您可以在其中對數據進行分類。有關此步驟的更多詳細信息,請參閱此SO answer。接下來,您可以使用ddplyplyr包(比如一天),以獲得l_var每個類別:

result = ddply(df, .(cat), summarise, l_var = l_var(value)) 

其中df是輸入data.frame其中cat是時間範疇,和價值在x值的上面的等式。爲了把結果寫入文件,您可以使用write.csv

write.csv(result, file = "out.csv") 

我覺得這個佔地約所有的步驟...

+1

您可能需要將'na.rm = TRUE'添加到sd()和mean()或其他一些處理缺失值的方法。 – 2012-08-10 19:09:11

+0

非常感謝! – 2012-08-10 19:11:29

+1

我有點擔心在這個解決方案的15分鐘內沒有考慮。我原以爲會需要一個'動物園:rollapply'方法。 – 2012-08-10 19:59:12

相關問題