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你能给出一个可重复的例子吗?