Функция R для исправления автоматически отформатированных данных - PullRequest
0 голосов
/ 13 февраля 2019

В настоящее время я анализирую набор данных бейсбола, в который включены данные подсчета, однако некоторые данные автоматически форматируются как дата.

Я уже пробовал использовать as.numeric, но это не помогает.Я предоставил образец данных ниже:

 Count(Factor) 0-0 0-1 0-2 1-Feb 1-Jan 1-Mar 2-Feb 2-Jan 2-Mar
               Feb-00 Jan-00 Mar-00

Я хотел бы удалить формат даты.Например, я хочу видеть 1 февраля как 1-2, 1 января как 1-1, 1 марта как 1-3, февраль 00 как 2-0.

У кого-нибудь есть предложения, как это сделать?

1 Ответ

0 голосов
/ 13 февраля 2019

Вы можете заменить сокращенные месяцы соответствующей календарной позицией, указав ссылку months.abb.Ниже я создал общую функцию с использованием Base R.

## function to apply 
month_num <- function(x){
  if (! grepl('\\w{3}', x))
    return(x)
  gsub('/?\\w{3}', as.character(match(regmatches(x, regexpr('(\\w{3})', x)), month.abb)), x)
}

## vector
strings <- c( '0-0', '0-1' ,'0-2', '1-Feb', '1-Jan', '1-Mar', '2-Feb', '2-Jan', '2-Mar', 'Feb-00', '/Jan-00', 'Mar-00')
sapply(strings, month_num, USE.NAMES = FALSE)
#>  [1] "0-0"  "0-1"  "0-2"  "1-2"  "1-1"  "1-3"  "2-2"  "2-1"  "2-3"  "2-00"
#> [11] "1-00" "3-00"

## data.frame or matrix
tmp <- data.frame(
  strings = c( '0-0', '0-1' ,'0-2', '1-Feb', '1-Jan', '1-Mar', '2-Feb', '2-Jan', '2-Mar', 'Feb-00', '/Jan-00', 'Mar-00')
)
tmp$strings <- apply(tmp, 1, month_num)
tmp
#>    strings
#> 1      0-0
#> 2      0-1
#> 3      0-2
#> 4      1-2
#> 5      1-1
#> 6      1-3
#> 7      2-2
#> 8      2-1
#> 9      2-3
#> 10    2-00
#> 11    1-00
#> 12    3-00

## list
strings <- list( '0-0', '0-1' ,'0-2', '1-Feb', '1-Jan', '1-Mar', '2-Feb', '2-Jan', '2-Mar', 'Feb-00', '/Jan-00', 'Mar-00')
strings <- lapply(strings, month_num) 
tail(strings)
#> [[1]]
#> [1] "2-2"
#> 
#> [[2]]
#> [1] "2-1"
#> 
#> [[3]]
#> [1] "2-3"
#> 
#> [[4]]
#> [1] "2-00"
#> 
#> [[5]]
#> [1] "1-00"
#> 
#> [[6]]
#> [1] "3-00"

Создано в 2019-02-12 с помощью пакета Представить (v0.2.1)

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