2017-09-07 10 views
-2

Sample_dataの2番目の列が必要です。 Rで使用されるコードは次のとおりです。diffは、変数を8 x 0として返します。

y<-Sample_Data[,2] 
> d.y<-diff(y, lag=1) 
> diff(y) 
# A tibble: 8 x 0 

は、なぜ私は変数x 0 8としてd.yを得るのですか?

SAMPLE_DATA:

Day  Amount 
01-01-2017 1400 
02-01-2017 1500 
03-01-2017 1200 
04-01-2017 1300 
05-01-2017 800 
06-01-2017 900 
07-01-2017 500 
08-01-2017 1400 
+0

@ChristophWolk多くのおかげです。私は私の理解の誤りを認識した。 – Vinay

答えて

2

yはtibbleですが、diffはベクトルを期待しています。チブルをサブセット化すると、チブルが維持されます。あなたはベクトルとしてデータにアクセスするためにpullまたは$を使用することができます。

library(dplyr) 
y <- pull(Sample_Data, 2) 
diff(y) 
+1

またはおそらく 'diff(Sample_Data $ Amount)'です。 –

+0

私は、 'Sample_Data'がデータフレームであるときに、' Sample_Data [、2] 'がベクトルを返すという混乱の一部を疑うでしょう。 '[' '抽出子はチブルオブジェクトとは異なる動作をします。したがって、オブジェクトのクラスを理解することは重要です(与えられたサンプルデータからは容易にはわかりません)。 – Benjamin

+0

'diff'は行列引数 –

1

これは、あなたは何をしたいですか?簡単な例。

day <- as.POSIXct(c("01-01-2017", "02-01-2017", "03-01-2017", "04-01-2017", 
        "05-01-2017", "06-01-2017", "07-01-2017", "08-01-2017"), 
        format = "%m-%d-%Y") 
amount <- c(1400, 1500, 1200, 1300, 800, 900, 500, 1400) 
df <- data.frame(Day = day, Amount = amount) 
df <- cbind(df, c(0, Diff = diff(df$Amount, lag = 1))) 
print(df) 
関連する問題