2017-03-27 12 views
0

我有一個數據幀(請參閱摘錄圖片),其索引適用於不同扇區。每一行都是特定部門指標的一個月份。但不是我需要使用相對收益 - 指數 - > ln(月份t指數/月份t-1指數)的指數。如何將包含相對回報的表格轉換成表格?例如第2行= ln(第2行/第1行)等。R - 如何轉換數據幀中的值

任何幫助,歡迎!

Data Frame

回答

0
n <- nrow(df) 
returns = apply(df, 2, function(x) log(x[-1]/x[-n])) 

數據

df = structure(list(TOTXTER = c(2215.83, 2245.72, 2270.89, 2223.7, 
2424.06, 2474.17, 2588.63, 2524.26, 2538.74, 2729.11, 2544.33 
), OILGSER = c(4674.38, 4676.73, 4637.56, 4573.83, 4983.08, 5244.84, 
5449.16, 5301.82, 5637.56, 5941.14, 5485.61), BMATRER = c(1660.95, 
1671.76, 1693.66, 1635.54, 1720.29, 1760.02, 1785.75, 1789.98, 
1789.09, 1887.73, 1716.61), CHMCLER = c(2103.37, 2105.47, 2108.5, 
2020.08, 2086.4, 2133.43, 2202.96, 2177.63, 2142.27, 2274.55, 
2108.15), BRESRER = c(1130.31, 1112.28, 1163.64, 1129.64, 1218.04, 
1262.35, 1271.25, 1296.26, 1280.15, 1331.12, 1110.19), INDUSER = c(1849.7, 
1847.57, 1858.19, 1820.16, 1963.64, 1986.84, 2026.37, 2053.58, 
2036.51, 2185.57, 1959.43), CNSTMER = c(1649.65, 1686.22, 1715.39, 
1670.04, 1774.8, 1808.93, 1786.93, 1799.99, 1844.09, 1928.18, 
1786.66), INDGSER = c(1823.64, 1820.19, 1830.12, 1787.6, 1925.63, 
1956.93, 1999.76, 2018.36, 2018.68, 2164.85, 1967.47), RITDVER = c(1073.32, 
1126.17, 1130.85, 1095.9, 1117.03, 1083.76, 1139.1, 1100.51, 
1120.35, 1138.33, 1125.28)), .Names = c("TOTXTER", "OILGSER", 
"BMATRER", "CHMCLER", "BRESRER", "INDUSER", "CNSTMER", "INDGSER", 
"RITDVER"), class = "data.frame", row.names = c("1", "2", "3", 
"4", "5", "6", "7", "8", "9", "10", "11")) 
+0

非常感謝您的回答!但我總是收到錯誤消息:dim(X)必須具有正值 – Tripleb10

+0

您正在使用df數據還是不同的東西? –

+0

我的實際數據框爲30列中的每列包含240行。我不確定如何將您的解決方案應用於我的數據框!對不起,我很新! – Tripleb10