Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据日期列按与r中前一行的日期差检查,为重复列的每组分配变量?_Python_R - Fatal编程技术网

Python 如何根据日期列按与r中前一行的日期差检查,为重复列的每组分配变量?

Python 如何根据日期列按与r中前一行的日期差检查,为重复列的每组分配变量?,python,r,Python,R,我是一个新手,对R和张贴问题,以及。对任何错误/评论表示歉意。 我的数据框如下: 我希望得到这样的东西: 描述:对于每个唯一的“ID”,检查与前一行的“日期”差异是否大于1年。如果>1年,则输出“R”,否则输出“F”。第一次应该是“英尺”。 有没有一种方法可以使用R/Python实现这一点 一种直接的方法是计算时间差,并使用ifelse语句创建预期变量。使用dplyr library(dplyr) df %>% mutate(Date = as.POSIXct(Date, for

我是一个新手,对R和张贴问题,以及。对任何错误/评论表示歉意。 我的数据框如下:

我希望得到这样的东西:

描述:对于每个唯一的“ID”,检查与前一行的“日期”差异是否大于1年。如果>1年,则输出“R”,否则输出“F”。第一次应该是“英尺”。
有没有一种方法可以使用R/Python实现这一点

一种直接的方法是计算时间差,并使用
ifelse
语句创建预期变量。使用
dplyr

library(dplyr)

df %>% 
 mutate(Date = as.POSIXct(Date, format = '%d-%m-%Y')) %>% 
 group_by(ID) %>% 
 mutate(temp = c(0, diff.difftime(Date)), Status = ifelse(temp > 365, 'R', 
                                                   ifelse(temp == 0, 'FT', 'F'))) %>% 
 select(-temp)
这就给了,


欢迎来到StackOverflow!您可以使用
dput()
函数更新您的问题,因为我们可以使用图像。您还可以发布您迄今为止尝试过的代码吗?欢迎使用StackOverflow!请阅读相关信息以及如何给出建议。这将使其他人更容易帮助你-@谢谢你的问题。不要尝试在注释中编写代码。还有一个问题:我们可以将输出写入csv文件吗?当然可以。查看函数
write.csv()
# A tibble: 10 x 3
# Groups:   ID [4]
      ID Date                Status
   <dbl> <dttm>              <chr> 
 1   101 2016-04-10 00:00:00 FT    
 2   101 2017-05-10 00:00:00 R     
 3   101 2017-05-15 00:00:00 F     
 4   101 2018-05-20 00:00:00 R     
 5   102 2016-04-10 00:00:00 FT    
 6   103 2016-04-01 00:00:00 FT    
 7   103 2016-04-10 00:00:00 F     
 8   103 2018-05-10 00:00:00 R     
 9   104 2016-04-10 00:00:00 FT    
10   104 2017-05-10 00:00:00 R
dput(df)
structure(list(ID = c(101, 101, 101, 101, 102, 103, 103, 103, 
104, 104), Date = c("10-04-2016", "10-05-2017", "15-05-2017", 
"20-05-2018", "10-04-2016", "01-04-2016", "10-04-2016", "10-05-2018", 
"10-04-2016", "10-05-2017")), class = "data.frame", row.names = c(NA, 
-10L))