Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
R 如何计算这些数据的时区?_R_Python 2.7_Time_Timezone_Timezone Offset - Fatal编程技术网

R 如何计算这些数据的时区?

R 如何计算这些数据的时区?,r,python-2.7,time,timezone,timezone-offset,R,Python 2.7,Time,Timezone,Timezone Offset,我有一个非常大的客户反馈数据集,我想删除重复的数据集 反馈如下所示: Great service!, n days ago OK, n days ago Could be better, n days ago Awesome, n days ago YES!, n days ago 为了获得每个反馈的时间戳,我从文件下载到我的计算机的时间(例如2015-07-06 EST-5天=2015-07-01)中减去n天前的时间(例如5天前的时间) 问题是我不知道我下载的服务器的时区,即记录反馈的时间

我有一个非常大的客户反馈数据集,我想删除重复的数据集

反馈如下所示:

Great service!, n days ago
OK, n days ago
Could be better, n days ago
Awesome, n days ago
YES!, n days ago 
为了获得每个反馈的时间戳,我从文件下载到我的计算机的时间(例如
2015-07-06 EST-5天=2015-07-01
)中减去
n天前的时间(例如
5天前的时间)

问题是我不知道我下载的服务器的时区,即记录反馈的时间,因此来自同一客户的一些相同反馈会记录两次。服务器已关闭,我无法访问

例如:

Feedback, Timestamp
Great service!, 2015-07-05 00:00
Great service!, 2015-07-04 02:00
OK, 2015-04-07 09:00
OK, 2015-04-06 17:00
Could be better, 2015-08-08 01:00
Could be better, 2015-08-07 13:00
Awesome, 2015-07-10 03:00 
Awesome, 2015-07-09 19:00   
YES!, 2015-03-20 03:00 
YES!, 2015-03-19 13:00 

假设无法从服务器获取时区,是否有一种方法可以根据我在这里提供的数据计算时区?我想不出来,所以我希望有人能帮忙

在这种情况下,很难断定评论是重复的。如果您愿意将相同的“反馈”视为重复,您可以按如下方式使用
dplyr
来过滤第一行:

library(dplyr)
df <- data.frame(Feedback = c('Great service!', 'Great service!', 'OK', 'OK', 'Could be better', 'Could be better', 'Awesome', 'Awesome', 'YES!', 'YES!', 'Whatever'), Timestamp = as.POSIXct(c('2015-07-05 00:00', '2015-07-04 02:00',
                                      '2015-04-07 09:00', '2015-04-06 17:00',
                                      '2015-08-08 01:00', '2015-08-07 13:00',
                                      '2015-07-10 03:00', '2015-07-09 19:00',
                                      '2015-03-20 03:00', '2015-03-19 13:00',
                                      '2015-04-19 01:00')), stringsAsFactors = FALSE)
df <- df %>% arrange(Feedback, Timestamp) %>% group_by(Feedback) %>% slice(1)
如果你想计算时间增量,这里是你将如何做。如您所见,它们高于我在上面用作示例的60分钟阈值:

df <- df %>% arrange(Feedback, Timestamp) %>% group_by(Feedback) %>% summarise(timedelta = as.numeric(difftime(max(Timestamp), min(Timestamp), units = 'mins')))
df
Source: local data frame [6 x 2]

         Feedback timedelta
            (chr)     (dbl)
1         Awesome       480
2 Could be better       720
3  Great service!      1320
4              OK       960
5        Whatever         0
6            YES!       840
df%arrange(反馈,时间戳)%%>%group_by(反馈)%%>%summary(timedelta=as.numeric(difftime(max(Timestamp),min(Timestamp),units='mins'))
df
来源:本地数据帧[6 x 2]
反馈时间增量
(chr)(dbl)
1480
2可能更好720
3.服务很好!1320
4好的960
5.0
6是的!840
更新:根据以下注释,要始终保留第一次出现,请使用以下命令:

df <- df %>% arrange(Feedback, Timestamp) %>% group_by(Feedback) %>% mutate(Timedelta = as.numeric(difftime(Timestamp, lag(Timestamp), units = 'mins'))) %>% filter(is.na(Timedelta) | Timedelta > 60) %>% select(-Timedelta)
df%arrange(Feedback,Timestamp)%%>%group_by(Feedback)%%>%mutate(Timedelta=as.numeric(difftime(Timestamp,lag(Timestamp),units='mins'))%%>%filter(is.na(Timedelta)| Timedelta>60)%%select(-Timedelta)

我正在创建一个附加列并取消选中它,以使事情更容易理解。有一种方法可以将表达式组合到过滤器本身,这有点复杂。

为什么删除了语言标记?@Pascal这个问题与语言有什么关系?为什么不是C++,perl?@ HelLov,这是OP的选择,你不能违背这个选择!谢谢,使用时间增量进行过滤是个好主意。但当我尝试你的例子时,除了“whatever”之外的所有反馈都被删除了?这是因为所有的时间增量都在60分钟之外。更改数据和过滤条件以查看想法的实际效果。你需要调整以适应你的需要。我理解,但是有没有一种方法可以基于时间增量进行过滤,同时保证每个独特的反馈中至少有一个会保留在新的df中?
df <- df %>% arrange(Feedback, Timestamp) %>% group_by(Feedback) %>% mutate(Timedelta = as.numeric(difftime(Timestamp, lag(Timestamp), units = 'mins'))) %>% filter(is.na(Timedelta) | Timedelta > 60) %>% select(-Timedelta)