簡體   English   中英

如何在小標題上應用diff函數

[英]How to apply the diff function on a tibble

我想將diff應用於數據框列,並按其名稱訪問它。 我要做的是以下幾點:

abscissa <- "distance"
data.op[, abscissa]

我得到這個輸出

# A tibble: 15 x 1
   distance
        <dbl>
 1     0.0426
 2     0.0409
 3     0.0412
 4     0.0406
 5     0.0406
 6     0.0407
 7     0.0402
 8     0.0403
 9     0.103 
10     0.0402
11     0.0395
12     0.0407
13     0.0406
14     0.0405
15     0.0404

然后我簡單地嘗試:

 diff(data.op[, abscissa])

但是輸出是:

 # A tibble: 15 x 0

我還嘗試了data.op[, abscissa] %>% diffdata.op %>% select(abscissa) %>% diff具有相同的零列結果。

但是,如果我這樣做

diff(as.data.frame(data.op)[, abscissa])

有用:

[1] -0.00169560  0.00024120 -0.00061200  0.00000000  0.00013320 -0.00045360  0.00003240  0.06299047 -0.06306967 -0.00071640  0.00120960 -0.00007920
[13] -0.00010440 -0.00005400

當我輸入str(data.op) ,我得到:

Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 15 obs. of  28 variables:
...

我不明白的是:

  • 為什么我的數據框有問題? 好的,我安裝了tidyverse,但之前從未在此數據框上使用過。

編輯:不正確,我確實使用mapvalues()函數創建數據框,所以我想這就是為什么它是小標題,而不是簡單的數據框。

  • 我的data.op 也是一個數據幀,那么為什么diff(data.op[, abscissa])不起作用?

  • 為什么data.op[, abscissa] %>% diffdata.op %>% select(abscissa) %>% diff也不起作用?

  • 我真的需要將其轉換為數據框以進行簡單的比較嗎? 這不利於可讀性...

抱歉,我無法提供更可重復的示例。 我嘗試了mtcars,並且一切正常(但是mtcars是一個數據幀,而不是一個小問題)。 在某個時候,我的data.op數據幀被轉換為小標題,但是我不知道為什么。

提供mtcars的可復制示例

library(tidyverse)
df <- as.tibble(mtcars)
abscissa <- "mpg"

現在,當你做

diff(df[, abscissa])
# A tibble: 32 x 0

diff(mtcars[, abscissa])
#[1]   0.0   1.8  -1.4  -2.7  -0.6  -3.8  10.1  -1.6  -3.6  -1.4  -1.4   0.9
#[13]  -2.1  -4.8   0.0   4.3  17.7  -2.0   3.5 -12.4  -6.0  -0.3  -1.9   5.9
#[25]   8.1  -1.3   4.4 -14.6   3.9  -4.7   6.4

工作正常。

那是因為

class(df[, abscissa])
#[1] "tbl_df"     "tbl"        "data.frame"

class(mtcars[, abscissa])
#[1] "numeric"

現在從?diff

x-包含要求值的數值向量或矩陣

因此,它不適用於小標題。

你可以做

df %>% pull(abscissa) %>% diff
# [1]   0.0   1.8  -1.4  -2.7  -0.6  -3.8  10.1  -1.6  -3.6  -1.4  -1.4   0.9
#[13]  -2.1  -4.8   0.0   4.3  17.7  -2.0   3.5 -12.4  -6.0  -0.3  -1.9   5.9
#[25]   8.1  -1.3   4.4 -14.6   3.9  -4.7   6.4

以來

df %>% pull(abscissa) %>% class
#[1] "numeric"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM