2017-11-09 23 views
3

데이터에 '평일'의 약어를 설정하는 데 문제가 있습니다. 내가 필요한 것은 약어로 "월, 화, 수, 목, 금, 토, 일"입니다. 내가 일하는 lubridate :: wday() 함수는 "Mon, Tue, Wed, Thu, Fri, Sat, Sun"값을 제공합니다.영어 요일 약어는 어떻게 변경합니까?

"화요일"과 "목요일"은 약간의 차이가 있습니다.

x <- seq(Sys.Date() - 7, Sys.Date(), by = 1) 
lubridate::wday(x, label = TRUE) 
## [1] Thu Fri Sat Sun Mon Tue Wed Thu 

는 또한 로케일과 언어 설정을 변경,하지만 난 가능한 매개 변수 (가능한 선택) 설정에 대해 확실하지 않다 때문에이 트릭을하지 않았다. LC_ALL 설정> -이 주제에 관한이 새로운 버전의 변화 (https://cran.r-project.org/bin/windows/base/NEWS.R-3.4.2.html가 언급 한 바와 같이

lubridate::wday(x, label = TRUE, locale = "French") 
## [1] jeu\\. ven\\. sam\\. dim\\. lun\\. mar\\. mer\\. jeu\\. 

lubridate::wday(x, label = TRUE, locale = "English") 
## [1] Thu Fri Sat Sun Mon Tue Wed Thu 

lubridate::wday(x, label = TRUE, locale = "English_Great Britain") 
## [1] Thu Fri Sat Sun Mon Tue Wed Thu 

lubridate::wday(x, label = TRUE, locale = "English_United States") 
## [1] Thu Fri Sat Sun Mon Tue Wed Thu 

의 차이는, (현재 3.4.2) 내 R 버전의 변화에서 올 수도 Sys.setlocale() 카테고리는 캐시 로케일 특정 일/월 이름과 strptime()의 AM/PM 표시를 무효화

시스템 (LC_TIME을 설정하면 R 3.1.0 이후가로) - 정보 :

R version 3.4.2 (2017-09-28) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows >= 8 x64 (build 9200) 

Matrix products: default 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] compiler_3.4.2 imsbasics_1.8.0 magrittr_1.5 tools_3.4.2  simtimer_2.0.18 Rcpp_0.12.12 lubridate_1.7.1 
[8] schedule_1.0.0 stringi_1.1.5 stringr_1.2.0 

답변

5

비표준 약어를 원하기 때문에, 당신은 수동으로해야합니다 :

x <- seq(Sys.Date() - 7, Sys.Date(), by = 1) 
Sys.setlocale("LC_TIME", "C") #since I'm at a non-English locale 
factor(weekdays(x, TRUE), 
     levels = c("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"), 
     labels = c("Mon", "Tues", "Wed", "Thurs", "Fri", "Sat", "Sun")) 
#[1] Thurs Fri Sat Sun Mon Tues Wed Thurs 
#Levels: Mon Tues Wed Thurs Fri Sat Sun 

잘 모르겠어요이는 R 버전 관련이있는 것으로 생각하는 이유 ...

+1

을 내가 이것을 할 수있는 방법 기본 설정? 이 약어 ("Mon, Tues, Wed, Thurs, Fri, Sat, Sun")가 정확히 동일한 OS, 설정, R 버전 등을 사용하는 친구 컴퓨터의 기본 설정 인 이유는 무엇입니까? ? 귀하의 질문에 - 나는 어둠 속에서 찾고 있어요 ...;) 어떤 도움을 매우 높이 평가됩니다. – MichiSmith

+0

나는 "화요일"을 "화요일"로 약자로 표시하지 않으며 [이 목록] (https://lh.2xlibre.net/values/abday/)에서도 찾을 수 없습니다. – Roland

+1

이전 버전의'lubridate'는 함수 안에 long과 abbr 이름을 하드 코딩했습니다. 그들은 단지 "영어"였고 그들은'화요일'과'목요일'을 위해 비표준 로케일 대회를 사용했습니다. @Roland와 마찬가지로, 나는 대체 약어가있는 로케일이 없다. – hrbrmstr