首页 > 解决方案 > 使用R识别行中重复字符的位置

问题描述

假设我的数据如下:

Date                                Price
01.01.2017 00:00 - 01.01.2017 01:00 20.96
01.01.2017 01:00 - 01.01.2017 02:00 20.90
01.01.2017 02:00 - 01.01.2017 03:00 18.13
01.01.2017 03:00 - 01.01.2017 04:00 16.03
01.01.2017 04:00 - 01.01.2017 05:00 16.43
01.01.2017 05:00 - 01.01.2017 06:00 13.75
01.01.2017 06:00 - 01.01.2017 07:00 11.10
01.01.2017 07:00 - 01.01.2017 08:00 15.47
01.01.2017 08:00 - 01.01.2017 09:00 16.88
01.01.2017 09:00 - 01.01.2017 10:00 21.81
01.01.2017 10:00 - 01.01.2017 11:00 26.24    #duplicate
01.01.2017 10:00 - 01.01.2017 11:00 26.38    #duplicate
01.01.2017 11:00 - 01.01.2017 12:00 26.42
01.01.2017 12:00 - 01.01.2017 13:00 27.66
01.01.2017 13:00 - 01.01.2017 14:00 28.70
01.01.2017 14:00 - 01.01.2017 15:00 29.66

我想使用由字符组成的日期列来查找重复观察在哪里?如您所见,我无法定义路径和使用str_detect,因为日期和时间总是在变化。

标签: rdplyrcharacter

解决方案


您可以duplicated在两个方向上使用来获取重复的行号。

inds <- which(duplicated(df$Date) | duplicated(df$Date, fromLast = TRUE))
inds
#[1] 11 12

数据

df <- structure(list(Date = c("01.01.2017 00:00 - 01.01.2017 01:00", 
"01.01.2017 01:00 - 01.01.2017 02:00", "01.01.2017 02:00 - 01.01.2017 03:00", 
"01.01.2017 03:00 - 01.01.2017 04:00", "01.01.2017 04:00 - 01.01.2017 05:00", 
"01.01.2017 05:00 - 01.01.2017 06:00", "01.01.2017 06:00 - 01.01.2017 07:00", 
"01.01.2017 07:00 - 01.01.2017 08:00", "01.01.2017 08:00 - 01.01.2017 09:00", 
"01.01.2017 09:00 - 01.01.2017 10:00", "01.01.2017 10:00 - 01.01.2017 11:00", 
"01.01.2017 10:00 - 01.01.2017 11:00", "01.01.2017 11:00 - 01.01.2017 12:00", 
"01.01.2017 12:00 - 01.01.2017 13:00", "01.01.2017 13:00 - 01.01.2017 14:00", 
"01.01.2017 14:00 - 01.01.2017 15:00"), Price = c(20.96, 20.9, 
18.13, 16.03, 16.43, 13.75, 11.1, 15.47, 16.88, 21.81, 26.24, 
26.38, 26.42, 27.66,28.7, 29.66)), class = "data.frame", row.names = c(NA, -16L))

推荐阅读