相关疑难解决方法(0)

按组计算连续行中的值之间的差异

这是我的df(data.frame):

group value
1     10
1     20
1     25
2     5
2     10
2     15 
Run Code Online (Sandbox Code Playgroud)

我需要按组计算连续行中值之间的差异.

所以,我需要一个结果.

group value diff
1     10    NA # because there is a no previous value
1     20    10 # value[2] - value[1]
1     25    5  # value[3] value[2]
2     5     NA # because group is changed
2     10    5  # value[5] - value[4]
2     15    5  # value[6] - value[5]
Run Code Online (Sandbox Code Playgroud)

虽然,我可以通过使用来处理这个问题ddply,但需要花费太多时间.这是因为我的团队中有很多团体df.(我的超过1,000,000个团体df)

有没有其他有效的方法来处理这个问题?

r

53
推荐指数
2
解决办法
4万
查看次数

从前一行R减去

我有一个像这样的数据帧:

df <- data.frame(start=c(5,4,2),end=c(2,6,3))

start end
    5   2
    4   6
    2   3
Run Code Online (Sandbox Code Playgroud)

我想要以下结果:

start end diff
    5   2 
    4   6    1
    2   3   -1
Run Code Online (Sandbox Code Playgroud)

基本上它是:

end[2] (second row) - start[1] = 6-5=1

end[3] - start[2] = 3-4 = -1

在R中这样做的好方法是什么?

r dataframe

5
推荐指数
1
解决办法
1万
查看次数

按ID计算时差

我有这样的数据:

Incident.ID.. = c(rep("INCFI0000029582",4), rep("INCFI0000029587",4))
date = c("2014-09-25 08:39:45", "2014-09-25 08:39:48", "2014-09-25 08:40:44", "2014-10-10 23:04:00", "2014-09-25 08:33:32", "2014-09-25 08:34:41", "2014-09-25 08:35:24", "2014-10-10 23:04:00")
df = data.frame(Incident.ID..,date, stringsAsFactors = FALSE)

df

   Incident.ID..                date
1  INCFI0000029582 2014-09-25 08:39:45
2  INCFI0000029582 2014-09-25 08:39:48
3  INCFI0000029582 2014-09-25 08:40:44
4  INCFI0000029582 2014-10-10 23:04:00
5  INCFI0000029587 2014-09-25 08:33:32
6  INCFI0000029587 2014-09-25 08:34:41
7  INCFI0000029587 2014-09-25 08:35:24
8  INCFI0000029587 2014-10-10 23:04:00
Run Code Online (Sandbox Code Playgroud)

我用这个函数来计算时间差(以秒为单位):

padded.diff = function(x) c(0L, diff(x)) 

df2=within(df, {
  date        = strptime(date, format="%Y-%m-%d %H:%M:%S")
  date.diff   = padded.diff(as.numeric(date)) …
Run Code Online (Sandbox Code Playgroud)

datediff r

4
推荐指数
1
解决办法
1672
查看次数

是否有 R 函数可以从前两个相邻值中获取结果?

例如

a <- c(7, 10, 5, 4, 11)

我想 b 为:

b[1] = 0,

b[2] = a[2] - a[1],

b[3] = a[3] - a[2],

b[4]​​ = a[4] - a[3],

b[5] = a[5] - a[4]

是否有自动获取这些值的功能?

r

2
推荐指数
1
解决办法
34
查看次数

标签 统计

r ×4

dataframe ×1

datediff ×1