【问题标题】:calculate elapsed time based on condition using if () function使用 if () 函数根据条件计算经过的时间
【发布时间】:2019-01-08 22:53:44
【问题描述】:

我正在尝试根据特定条件计算经过的时间。在数据集中,aDUR 表示经过的时间,TSFD 表示以小时为单位的时间。我只需要在FLAG1 =1时计算aDUR,应该是[i+1]记录的TSFD减去[i]记录的TSFD。当 FLAG1 = 0 时,所有记录 aDUR 都被赋值为 1。

这是我的数据集的示例。

head(df1_2)
  C        ID DV    DATE      TIME   TSFD  TSLD  DOSE   MDV  EVID  RATE DUR      WT   AGE HEIGHT BMI         SEX    AMT    FLAG1
  <lgl> <int> <fct> <fct>     <fct> <dbl> <dbl> <int> <int> <int> <dbl> <fct> <dbl> <dbl> <fct>  <fct>       <fct>  <fct>  <dbl>
1 NA    11003 .     3/14/2007 22:00     0     0    75     1     1  246. .      54.7  44.6 73     15.89851181 Female 245.97     0
2 NA    11003 .     3/14/2007 23:00     1     0    75     1     1  246. .      54.7  44.6 73     15.89851181 Female 245.97     1
3 NA    11003 .     3/15/2007 1:00      3     0    75     1     1  246. .      54.7  44.6 73     15.89851181 Female 245.97     0
4 NA    11003 .     3/15/2007 2:00      4     0    75     1     1  246. .      54.7  44.6 73     15.89851181 Female 245.97     0
5 NA    11003 .     3/15/2007 3:00      5     0    75     1     1  246. .      54.7  44.6 73     15.89851181 Female 245.97     0
6 NA    11003 .     3/15/2007 4:00      6     0    75     1     1  246. .      54.7  44.6 73     15.89851181 Female 245.97     1

我是 R 的新手。这是我能想到的,但它不起作用。有人能指出我哪里做错了吗?我也试过 ifelse,但我不知道如何计算 ifelse 函数中经过的时间。

f2 <-function(fc){
  TSFD <- fc$TSFD
  FLAG1 <- fc$FLAG1
  aDUR <- rep(1,length(FLAG1))
  for (i in 1:length(FLAG1))
   if(FLAG1 == 1) {aDUR[i] <- TSFD[i+1]-TSFD[i]}
  fc$aDUR <- aDUR
  return(fc)
}

另外,我在数据集中有多个主题。如何根据 ID 组应用此功能? 我试过df2 &lt;- df1_2%&gt;%group_by(ID)%&gt;%f2(.)。它不起作用。

提前感谢您的任何意见。

【问题讨论】:

    标签: r if-statement dplyr custom-function


    【解决方案1】:

    我认为,你需要:

    df <- df %>% 
        group_by(ID) %>% 
        mutate(aDUR = c(0, diff(TSFD)))
    

    【讨论】:

      猜你喜欢
      • 2020-03-26
      • 2021-08-07
      • 2019-09-11
      • 2019-06-10
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多