首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算数据差的r函数误差

计算数据差的r函数误差
EN

Stack Overflow用户
提问于 2020-07-28 17:40:37
回答 2查看 73关注 0票数 0

我有一个像这样的数据文件:

姓名日期

大卫2019-12-23

大卫2020-1-10

大卫2020-2-13

凯文2019-2-12

凯文2019-3-19

凯文2019-5-1

凯文2019-7-23

基本上,我试图计算每个实例之间的日期差异,具体针对每个人。我目前使用的是以下for-循环:

代码语言:javascript
运行
复制
df$daysbetween <- with(df, ave(as.numeric(date) , name, 
              FUN=function(x) { z=c(NA,NA); 
                            for( i in seq_along(x)[-(1:2)] ){
                                z <- c(z, (x[i]-x[i-1]))}
                            return(z) }) )

目前,它计算第二个和第三个之间的差异,以及任何后续实例,非常好。但是,它并不计算第一次约会和第二次约会之间的差别,我需要它。我的代码中的错误来自哪里?会很感激你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-28 18:13:59

只需使用来自lag包的dplyr

描述:在向量中找到“以前”(滞后())或“下一步”(铅())值。用于比较当前值后面或之前的值。

代码语言:javascript
运行
复制
df %>%
  group_by(name) %>%
  mutate(diff = date - lag(date))

输出:

代码语言:javascript
运行
复制
  name  date       diff   
  <chr> <date>     <drtn> 
1 David 2019-12-23 NA days
2 David 2020-01-10 18 days
3 David 2020-02-13 34 days
4 Kevin 2019-02-12 NA days
5 Kevin 2019-03-19 35 days
6 Kevin 2019-05-01 43 days
7 Kevin 2019-07-23 83 days
票数 0
EN

Stack Overflow用户

发布于 2020-07-28 18:05:04

代码语言:javascript
运行
复制
 transform(df, diff = ave(Date, Name, FUN = function(x)c(NA,diff(as.Date(x)))))
   Name       Date diff
1 David 2019-12-23 <NA>
2 David  2020-1-10   18
3 David  2020-2-13   34
4 Kevin  2019-2-12 <NA>
5 Kevin  2019-3-19   35
6 Kevin   2019-5-1   43
7 Kevin  2019-7-23   83
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63139859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档