Извлечение нескольких типов данных из столбца в r - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть набор данных, в котором дата, время и скорость были объединены в один столбец, desciptio:

  coordinates     Name                                descriptio
1 (-123.3397, 50.07757) HAR07(0) Timestamp: 08/16/2018 03:44:00 Speed: 0.8
2 (-123.3396, 50.07787) HAR07(1) Timestamp: 08/16/2018 07:46:00 Speed: 0.1
3 (-123.3397, 50.07755) HAR07(2) Timestamp: 08/16/2018 11:50:00 Speed: 0.0
4 (-123.3616, 50.11495) HAR07(3) Timestamp: 08/17/2018 04:01:00 Speed: 0.1
5 (-123.3289, 50.10053) HAR07(4) Timestamp: 08/18/2018 04:22:00 Speed: 0.4
6 (-123.3514, 50.10265) HAR07(5) Timestamp: 08/19/2018 04:44:00 Speed: 0.1

Я ищу способ извлечь эти значения идобавьте их во фрейм данных в виде отдельных столбцов date, time и speed.Я видел несколько методов для извлечения даты, и, возможно, времени, но я действительно нахожусь в тупике на скорости.Я нашел этот вопрос, который кажется похожим, но я недостаточно знаком с регулярным выражением, чтобы приспособить его к моим потребностям.Любой совет?

Заранее спасибо!

Редактировать: эти данные находятся в шейп-файле, а не в фрейме данных.Я думаю, что могу прочитать их во фрейме данных, отредактировать, а затем снова сохранить их как шейп-файл, но я бы предпочел сохранить их как пространственные данные, если это возможно.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Решение оказалось довольно простым, если немного сложнее, чем я хотел:

# Split column into 5 parts at each space
split <- str_split_fixed(raw.shp.data$descriptio, ' ', 5)

# Add the relevant columns back to the original data frame
raw.shp.data$time <- paste(split[,2], split[,3])
raw.shp.data$speed <- split[,5]

# Delete no-longer-needed descriptio column
raw.shp.data$descriptio <- NULL

Это сохраняет пространственный формат без изменений.

0 голосов
/ 15 ноября 2018

Вот, пожалуйста:

df <- read.table(header=TRUE,stringsAsFactors=FALSE,text="  coordinates     Name                                descriptio
1 '(-123.3397, 50.07757)' HAR07(0) 'Timestamp: 08/16/2018 03:44:00 Speed: 0.8'
2 '(-123.3396, 50.07787)' HAR07(1) 'Timestamp: 08/16/2018 07:46:00 Speed: 0.1'
3 '(-123.3397, 50.07755)' HAR07(2) 'Timestamp: 08/16/2018 11:50:00 Speed: 0.0'
4 '(-123.3616, 50.11495)' HAR07(3) 'Timestamp: 08/17/2018 04:01:00 Speed: 0.1'
5 '(-123.3289, 50.10053)' HAR07(4) 'Timestamp: 08/18/2018 04:22:00 Speed: 0.4'
6 '(-123.3514, 50.10265)' HAR07(5) 'Timestamp: 08/19/2018 04:44:00 Speed: 0.1'")

transform(df,
  date = as.Date(substr(descriptio,12,21),"%M/%d/%Y"),
  time = substr(descriptio,23,30),
  speed = as.numeric(substr(descriptio,39,41)))
#             coordinates     Name                                descriptio       date     time speed
# 1 (-123.3397, 50.07757) HAR07(0) Timestamp: 08/16/2018 03:44:00 Speed: 0.8 2018-11-16 03:44:00   0.8
# 2 (-123.3396, 50.07787) HAR07(1) Timestamp: 08/16/2018 07:46:00 Speed: 0.1 2018-11-16 07:46:00   0.1
# 3 (-123.3397, 50.07755) HAR07(2) Timestamp: 08/16/2018 11:50:00 Speed: 0.0 2018-11-16 11:50:00   0.0
# 4 (-123.3616, 50.11495) HAR07(3) Timestamp: 08/17/2018 04:01:00 Speed: 0.1 2018-11-17 04:01:00   0.1
# 5 (-123.3289, 50.10053) HAR07(4) Timestamp: 08/18/2018 04:22:00 Speed: 0.4 2018-11-18 04:22:00   0.4
# 6 (-123.3514, 50.10265) HAR07(5) Timestamp: 08/19/2018 04:44:00 Speed: 0.1 2018-11-19 04:44:00   0.1

В R нет нативного типа / класса для времени, поэтому я оставил его как символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...