R 滚动行减法

R 滚动行减法,r,row,subtraction,R,Row,Subtraction,我希望执行行减法,其中我有一组个人,我想从上面的行中减去最近的行,就像滚动行减法一样。有人知道一个简单的方法吗 数据如下所示: Name Day variable.1 1 Bob 1 43.4 2 Bob 2 32.0 3 Bob 3 18.1 4 Bob 4 41.2 5 Bob 5 85.2 6 Jeff 1 17.4 7 Jeff 2 55.6 8

我希望执行行减法,其中我有一组个人,我想从上面的行中减去最近的行,就像滚动行减法一样。有人知道一个简单的方法吗

数据如下所示:

    Name Day variable.1
1   Bob   1       43.4
2   Bob   2       32.0
3   Bob   3       18.1
4   Bob   4       41.2
5   Bob   5       85.2
6  Jeff   1       17.4
7  Jeff   2       55.6
8  Jeff   3       58.7
9  Jeff   4       40.6
10 Jeff   5       77.3
11 Carl   1       52.9
12 Carl   2       71.7
13 Carl   3       84.3
14 Carl   4       54.8
15 Carl   5       69.7
例如,对于Bob,我希望它的结果是:

    Name Day variable.1
1   Bob   1       NA
2   Bob   2       -11.4
3   Bob   3       -13.9
4   Bob   4       23.1
5   Bob   5       44
然后它将转到下一个名称并执行相同的任务。

您可以尝试

library(data.table)#v1.9.5+
setDT(df1)[,variable.1:=c(NA,diff(variable.1)) , Name]
或者使用@Jan Gorecki建议的data.table的devel版本的shift。安装说明如下:

你可以试试

library(data.table)#v1.9.5+
setDT(df1)[,variable.1:=c(NA,diff(variable.1)) , Name]
或者使用@Jan Gorecki建议的data.table的devel版本的shift。安装说明如下:

您可以使用基本ave函数。例如,如果数据位于名为dd的data.frame中

您可以使用基本ave函数。例如,如果数据位于名为dd的data.frame中

您也可以尝试:

library(dplyr)
df %>% group_by(Name) %>% mutate(diff = variable.1-lag(variable.1))
Source: local data frame [15 x 4]
Groups: Name

   Name Day variable.1  diff
1   Bob   1       43.4    NA
2   Bob   2       32.0 -11.4
3   Bob   3       18.1 -13.9
4   Bob   4       41.2  23.1
5   Bob   5       85.2  44.0
6  Jeff   1       17.4    NA
7  Jeff   2       55.6  38.2
8  Jeff   3       58.7   3.1
9  Jeff   4       40.6 -18.1
10 Jeff   5       77.3  36.7
11 Carl   1       52.9    NA
12 Carl   2       71.7  18.8
13 Carl   3       84.3  12.6
14 Carl   4       54.8 -29.5
15 Carl   5       69.7  14.9
您也可以尝试:

library(dplyr)
df %>% group_by(Name) %>% mutate(diff = variable.1-lag(variable.1))
Source: local data frame [15 x 4]
Groups: Name

   Name Day variable.1  diff
1   Bob   1       43.4    NA
2   Bob   2       32.0 -11.4
3   Bob   3       18.1 -13.9
4   Bob   4       41.2  23.1
5   Bob   5       85.2  44.0
6  Jeff   1       17.4    NA
7  Jeff   2       55.6  38.2
8  Jeff   3       58.7   3.1
9  Jeff   4       40.6 -18.1
10 Jeff   5       77.3  36.7
11 Carl   1       52.9    NA
12 Carl   2       71.7  18.8
13 Carl   3       84.3  12.6
14 Carl   4       54.8 -29.5
15 Carl   5       69.7  14.9

轮班呢?已经稳定的特性,那么转换呢?已经稳定的功能DataMiner,太棒了!它工作得很好。我唯一的另一个问题是有些人有不同数量的数据。例如,Bob可能有5行,但Jeff只有3行。有没有快速的解决办法?谢谢,这应该不是问题。你试过了吗?我试过了。它给了我一些错误的说法,错误:错误的结果大小46,预期23或1你能给出一个可复制的例子吗?DatamineR,太棒了!它工作得很好。我唯一的另一个问题是有些人有不同数量的数据。例如,Bob可能有5行,但Jeff只有3行。有没有快速的解决办法?谢谢,这应该不是问题。你试过了吗?我试过了。它给了我一些错误的说法,错误:错误的结果大小46,预期23或1你能给出一个可重复的例子吗?