1
Date FXDL.AED.USD FXDL.ALL.USD FXDL.AMD.USD FXDL.ANG.USD
03/01/2005 3.6726 92.1 484 1.779999971
04/01/2005 3.6726 92.1 487 1.779999971
05/01/2005 3.6725 94.5 490.5 1.779999971
06/01/2005 3.6726 95.1 490.5 1.779999971
07/01/2005 3.6725 95.3 493.5 1.779999971
08/01/2005 NA NA NA NA
09/01/2005 NA NA NA NA
10/01/2005 3.6726 96.9 497.5 1.779999971
11/01/2005 3.6725 97.2 502.5 1.779999971
上記のデータフレームには多数の列がありますが、上のほんの一部ですが、それぞれの連続する行の違いカラム。例えば、列3の各列の値 - 2、行4 - - 3行5 4等R - 各列の連続する行の違いを見つける方法
Iは、次のコードを使用している:
x_diff <- x[-1,] - x[-nrow(x),]
をこれがエラーを思い付きますいくつかのフィールドにはNA項があるからと考えていますが、これらのNA項も加算してNAを返すことができます。
EDIT:
structure(list(Weekday = c(1, 2, 3, 4, 5), Date = structure(c(1104710400,
1104796800, 1104883200, 1104969600, 1105056000), class = c("POSIXct",
"POSIXt"), tzone = "UTC"), FXDL.AED.USD = c("3.6726000000000001",
"3.6726000000000001", "3.6724999999999999", "3.6726000000000001",
"3.6724999999999999"), FXDL.ALL.USD = c("92.1", "92.1", "94.5",
"95.1", "95.3"), FXDL.AMD.USD = c("484", "487", "490.5", "490.5",
"493.5")), .Names = c("Weekday", "Date", "FXDL.AED.USD", "FXDL.ALL.USD",
"FXDL.AMD.USD"), row.names = c(NA, 5L), class = c("tbl_df", "tbl",
"data.frame"))
' sapply(X [、sapply(X、is.numeric)]、差分)でこれを行うことができます。上記のコードは、データフレーム 'x'の各数値列に' diff'関数(2つの値の差)を適用します。 – eipi10
ありがとう!しかし、これは最初の列に対してのみ行うようです。 – isuckatcoding
@isuckatcoding; eipi10のコードはうまくいくはずですので、あなたの質問にあなたのデータの小さな例を追加することができます:これは、 'dput(x [1:5、1:5])'の結果をあなたの質問に加えることで可能になります。ありがとう。 (psで、あなたは 'sapply' ineipiのコードを明示的に行列に変換するのを避けることができると思います...' diff(as.matrix(x [、is.numeric)])))) ') – user20650