반응형

예를 들어 A의 개발 환경에서 각각 개발하고 깃허브에 올린다음,

그것을 B의 개발환경에서 다시 불러와서 작업하고 싶은 경우가 있다.

 

이 상태에서 그냥 Pull을 누를 경우 충돌이 생기면서 최신화가 되지 않는다.

 

이럴 때는 아래 코드를 참조하자.

 

git reset --hard HEAD
git pull

 

reset --hard HEAD 는 가장 최근의 코드로 Commit을 리셋합니다.

그리고 이 상태에서

git pull을 하시면 충돌 없이 최신화가 됩니다.

반응형
반응형
Error in install.packages : ERROR: failed to lock directory
Try removing ‘C:\Users\..../00LOCK’

R MarkDown을 사용하려니까 저런 에러가 발생했다.

 

해결 방법은 위에 해당하는 디렉토리로 가서 00LOCK이라고 하는 폴더를 지워주자

그러면 R Markdown이 다시 제대로 동작한다.

반응형
반응형

따로 CRAN Page에 들어가지 않고 명령어로 R 버전을 업그레이드 할 수 있다.

 

 

 

1. install.packages("installr")

패키지 콜을  먼저 수행한다.

WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/Jessie/Documents/R/win-library/4.0’
(as ‘lib’ is unspecified)
also installing the dependencies ‘glue’, ‘magrittr’, ‘stringi’, ‘stringr’

URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/glue_1.4.2.zip'을 시도합니다
Content type 'application/zip' length 154967 bytes (151 KB)
downloaded 151 KB

URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/magrittr_2.0.1.zip'을 시도합니다
Content type 'application/zip' length 235353 bytes (229 KB)
downloaded 229 KB

URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/stringi_1.5.3.zip'을 시도합니다
Content type 'application/zip' length 15243599 bytes (14.5 MB)
downloaded 14.5 MB

URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/stringr_1.4.0.zip'을 시도합니다
Content type 'application/zip' length 216647 bytes (211 KB)
downloaded 211 KB

URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/installr_0.22.0.zip'을 시도합니다
Content type 'application/zip' length 341403 bytes (333 KB)
downloaded 333 KB

package ‘glue’ successfully unpacked and MD5 sums checked
package ‘magrittr’ successfully unpacked and MD5 sums checked
package ‘stringi’ successfully unpacked and MD5 sums checked
package ‘stringr’ successfully unpacked and MD5 sums checked
package ‘installr’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
	C:\Users\Jessie\AppData\Local\Temp\RtmpINxkdB\downloaded_packages

 

2. library(installr)

그리고 라이브러리 콜을 수행한다.

필요한 패키지를 로딩중입니다: stringr

Welcome to installr version 0.22.0

More information is available on the installr project website:
https://github.com/talgalili/installr/

Contact: <tal.galili@gmail.com>
Suggestions and bug-reports can be submitted at: https://github.com/talgalili/installr/issues

			To suppress this message use:
			suppressPackageStartupMessages(library(installr))

 

3. check.for.updates.R()

위 명령어 수행을 통해 R의 버전을 확인한다.

나는 현재 업데이트가 마친 상태이므로 (21.02.12 기준) 4.0.3 버전이 설치가 완료되었다.

 

4. install.R()

위 명령어 수행과 동시에 설치에 대한 진행이 시작되고 그대로 Next - Next로 쫓아 수행한다.

 

5. version
인스톨을 마친 후에 RStudio를 종료하고 실행 후 version 명령어를 입력하여 현재의 버전을 확인 할 수 있다. 아래 내용처럼 현재의 R버전이 4.0.3 (2020-10-10)의 최신 버전인 것을 확인 가능하다.

> version
               _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          4                           
minor          0.3                         
year           2020                        
month          10                          
day            10                          
svn rev        79318                       
language       R                           
version.string R version 4.0.3 (2020-10-10)
nickname       Bunny-Wunnies Freak Out 
반응형
반응형

Git의 첫 시작은 Git Bash에서 mkdir부터 시작합니다.

 

오랜만에 다시 Git을 사용해보려고(거의 복기 수준) 매뉴얼 보면서 따라가보는데

그런데 오늘은 처음부터 복병이 있네요. Permission Denied라고 뜹니다 ㅠ_ㅠ

 

이걸 해결하려고 찾아보고 실행해본 방법 중 가장 쉬운방법은

아이콘에서 오른쪽 마우스 하고 관리자 권한으로 실행하는 방법이었습니다.

 

이 방법으로 Try 해보세요 :)

 

 

반응형
반응형

<순서>

1. 데이터 프레임 만들기

2. 데이터 프레임에 Column 추가

3. 데이터 프레임에서 Column 제거

 

 

1. 데이터 프레임 만들기

종종 샘플 데이터를 만들 때 데이터프레임을 직접 만들어야 하는 경우가 있습니다. R에서 데이터 프레임을 직접 만드는 방법은 아래와 같습니다.

# Data Frame 만들기

id <- c(1,2,3,4,5,6)
class <- c(1,1,1,1,2,2)
math <- c(50,60,45,30,25,50)
english <- c(98,97,86,98,80,89)

exam <- data.frame(id,class,math,english, stringsAsFactors = F)

1) c()를 이용해 길이를 맞춰 벡터를 생성한다

2) 해당 벡터를 data.frame이라는 함수와 함께 생성한다.

3) Character가 자동으로 Factor로 처리되는 것을 막기 위해 stringsAsFactors = F로 설정해준다.

 

결과는 아래와 같습니다.

  id class math english
1  1     1   50      98
2  2     1   60      97
3  3     1   45      86
4  4     1   30      98
5  5     2   25      80
6  6     2   50      89

 

꼭 이 방법을 사용해야 하는 것은 아니지만, 가장 깔끔하게 데이터를 생성할 수 있는 방법이라고 생각합니다.

더 좋은 방법은 댓글로 공유해주세요 :)

 

2. 데이터 프레임에 Column 추가하기

위에서 만든 데이터 프레임은 시험 점수에 대한 데이터 프레임입니다. 만약 데이터 프레임에 과학점수를 추가하고 싶을 수 있겠죠? 그럼 어떻게 해야 할까요?

# Data Frame Column 추가하기
# 1) $ 사용하기
exam$science <- c(50,60,78,58,65,98)

먼저 위와 같이 $로 이용한 방법이 있습니다.

기존의 데이터 프레임에서 $를 사용하여 새로운 Column이름을 붙여주고 똑같은 길이의 벡터를 붙여주는 방법입니다.

 

# 2) transform 함수 사용하기
exam <- transform(exam, physics = c(10,10,10,20,40,30))

두 번째로 transform 함수를 사용하는 방법입니다.

Transform 함수를 통하여 Physics라는 Column을 추가했습니다.

결과를 볼까요?

  id class math english science physics
1  1     1   50      98      50      10
2  2     1   60      97      60      10
3  3     1   45      86      78      10
4  4     1   30      98      58      20
5  5     2   25      80      65      40
6  6     2   50      89      98      30

Science와 Physics가 잘 생성된 것을 볼 수 있네요 :)

 

3. 데이터 프레임에서 Column 제거

마지막으로 만든 Column을 지우고 싶은 경우가 있을 수 있습니다. 현재 exam 데이터 프레임에는 science와 physics 점수가 들어가 있습니다. 이 중 physics 점수를 빼고 싶다고 가정할게요.  

 

# Data Frame Column Column 지우기

exam$physics <- NULL

 $을 사용해서 제거를 원하는 Column에 NULL을 할당해주면 됩니다. 간단하죠?

 

 

감사합니다 :)

반응형
반응형

데이터 분석에서 데이터를 구하는 일은 늘 숙제인 것 같다.

오늘은 네이버 실시간 증권 뉴스를 가져오는 연습을 진행해본다.

 

1. 네이버 증권뉴스 주소 

finance.naver.com/news/news_list.nhn?mode=LSS2D&section_id=101&section_id2=258

 

실시간 속보 : 네이버 금융

관심종목의 실시간 주가를 가장 빠르게 확인하는 곳

finance.naver.com

뉴스 제목에서 오른쪽 마우스 - 검사를 누르면 오른쪽에 패널이 생기면서 태그들이 생성됨

 

 

2. RStudio 켜고 패키지 다운 및 라이브러리 생성

install.packages(c("rvest","ggplot2","dplyr","httr"))
library(httr)
library(rvest)

 

3. URL 생성

url <- 'https://finance.naver.com/news/news_list.nhn?mode=LSS2D&section_id=101&section_id2=258'
data <- GET(url)

위에 링크에 맞는 url을 url객체에 넣어준다.

 

4. 태그를 찾아 text 뽑아내기

news <- read_html(data, encoding="EUC-KR")

headlines <- news %>% 
  html_nodes('dl') %>% 
  html_nodes('.articleSubject') %>% 
  html_nodes('a') %>% 
  html_text()

 

5. 결과 보기

 [1] "‘삼천피’‘천스닥’ 시대 눈앞에 왔다"                                                  
 [2] "박셀바이오, `투자위험종목` 지정에 6일 거래정지된다"                                     
 [3] "코로나19로 지친 삶…술·담배 소비액 역대 최대"                                          
 [4] "[신년 대예측]코스피 3천 시대?…동학개미 힘 어디까지?"                                   
 [5] "[데일리안 오늘뉴스 종합] 박원순 피소 몰랐다는 남인순에 野 맹폭, 배달비 부담에 직접 나.."
 [6] "[어르신이 행복한 나라] 경제력 있고 건강한데 여가는 아직도 경로당?"                      
 [7] "두산 오너家, 퓨얼셀 지분 3천억 규모 블록딜로 처분"                                      
 [8] "고객 대접할 쿠키를 발 위에…백화점 직원들의 일탈"                                       
 [9] "코스피 3000선 육박…배경엔 68조 고객예탁금"                                             
[10] "코스피 1000 돌파후 31년만에 `삼천스피`시대 연다"                                        
[11] "[마켓인사이트]두산 오너家의 '새옹지마'...석달 전보다 50% 높은값에 퓨얼셀 블록딜"        
[12] "[표]아시아 주요 증시 동향(1월 5일)"                                                     
[13] "국민연금, 대한항공의 아시아나 인수 '반대'...\"주주가치 훼손 우려\""                     
[14] "5일 장 마감 후 주요 종목 뉴스"                                                          
[15] "“세스코, 믿고 먹는 깨끗한 음식점 되는데 도움”"                                        
[16] "장 마감 후 기업공시[1월 5일]"                                                           
[17] "[마켓인사이트]AJ셀카, 중고차 '오토허브' 운영사 신동해홀딩스에 매각"                     
[18] "'8만전자' 된 삼성전자, 시총도 500조원 돌파"                                             
[19] "엔드림, 조이시티 지분 23만주 추가 취득"                                                 
[20] "오르비텍, 100억원 규모 CB 발행 결정"      

So Happy Baby

 

크롤링하는 법은 해도 해도 잘 안쓰니 까먹는 것 같다.

R을 산소처럼 사용해야 이 툴이 손에 익을텐데 아직은 멀었나보다.

Qlik 사용하듯 R을 편하게 다루는 날도 얼른 왔으면 좋겠다.

 

반응형

'Data > R' 카테고리의 다른 글

R) 명령어로 버전 업그레이드 하기  (1) 2021.02.12
R) Data Frame 다루기  (0) 2021.02.06
R) lapply와 sapply의 차이  (0) 2020.04.23
R) class(), typeof()의 차이  (0) 2020.04.23
R) apply 정리  (0) 2020.04.22
반응형

노트패드에서 디버깅할 때 ; 단위로 끊어져있지 않은 경우 가독성이 매우 떨어진다..

이럴 때 사용할 수 있는 유용한 잡기!

 

1. 'Alt + F'

2. 찾을 내용 :  ; 

3. 검색 모드-확장(\n, \r, \t, \0, \x...) 체크

4. 바꿀내용 : ;\n

5. 모두 바꾸기(A) 클릭

반응형
반응형

안녕하세요 제씨입니다.

가을이 한층 더 깊어졌네요. 점점 추위가 익숙해지는 날씨가 되는 것 같습니다.

여러분도 고뿔 조심하셔요 :)

 

오늘은 고객사와 논의하면서 Performance에 대한 이슈가 제기되었습니다.

무슨 말이냐면, QlikView의 화면 로딩이 느리다는 것이지요 ㅠ_ㅠ

 

저도 어찌어찌하면서 찾아보니 다음과 같은 자료가 잘 정리되어 있더군요.

 

 

Performance and Optimization Best Practices in Qlik v2.pptx
3.45MB

 

Qlik community에서 배포되어있는 파일을 참고삼아 공유합니다.

영어로 되어있지만, 꼼꼼하게 퍼포먼스 향상을 어떻게 해야 하는지 적혀있으니 참고하세요 :)

 

 

퍼포먼스가 느려지는 이유는 다양하지만 대표적으로 꼽자면,

데이터가 너무 방대하거나, 화면에 표현식이 너무 많이 들어가 있거나

If나 반복문 로직을 사용해서 퍼포먼스가 안좋아지는 경우가 대표적이겠네요.

 

그럼 이런 퍼포먼스 이슈들을 어떻게 해결해야 할까요?

 

 

 

1. 복잡한 수식은 Script에서 해결하기

화면에서 If를 쓰거나 반복문을 사용할 때 먼저 생각해야 할 점은, 그 표현식의 로직을 Script에 태울 수 있냐는 점입니다.

그럼 Qvd파일로 마트화해서 데이터 값만 불러들이고, 표현식에서는 간단한 Sum정도로 표현할 수 있도록 하는 것이죠.

최대한 표현식을 가볍게 하는 게 좋습니다.

 

 

 

 

2. IF 연속문을 Pick-Match로 치환하기

If문 안에 If문이 들어있는 경우, 퍼포먼스에 큰 영향을 미친다고 합니다. If문이 기본적으로 연관된 테이블을 스캔하기 때문이라고 하네요. 그래서 시간이 지날수록 퍼포먼스가 좋아질 리가 없겠죠?

그럼 이런 경우 가급적이면 Pick-Match로 치환하여 표현할 수 있는 방법을 사용하는 게 좋습니다.

	If( Region=‘North America’,  100, 
		if( Region=‘Asia’,50, 
			if( Region=‘Europe’,75)
		)
	)
=pick( match( Region,'North America','Asia','Europe'),100,50,75)

 

 

3. Set으로 대체하여 사용하기

가급적 Set으로 사용할 수 있으면 Set으로 표현하고, If문을 최소화하는 게 좋습니다. 또한 If문을 불가피하게 사용해야 할 경우에는, 문자열 검색이 아닌 Integer 검색이 될 수 있도록 구축하는 게 좋습니다.

하지만 Set으로 표현할 수 있다면 최선이겠죠?

 

Worst:  Sum(  If(  ClientGroup=‘North America Sales’, Sales) )   

Better:  Sum( If ( ClientGroupNum=1,Sales))

Best:  Sum( {<ClientGroupNum={1}>} Sales)

 

 

 

 

4. AGGR(), 계산된 차원(Caculated Dimension)도 가급적 피하자

Aggr() 함수는 강력한 기능입니다. 표현식 내에서 Group By 값으로 집계된 값을 계산할 수 있도록 도와주죠. 하지만 퍼포먼스 측면에서는 도움이 되지는 않습니다. 그래서 가급적이면, Script 단에서 내려서 해결해주는 게 좋다고 하네요!

 

 

 

 

5. 3~4개 이상의 테이블을 참조하는 차트를 가급적 피하자

데이터 모델링에서 신경써야 하는 부분이겠죠. 그래서 Fact Table은 가급적 최소화 하는 게 좋습니다. 다양한 테이블을 참조해서 가져오게 되면 성능이 저하되니까요.

 

퍼포먼스를 고려한다면 가급적 모든 Table을 Concatenate해서 하나의 통테이블로 만들면 좋다고 합니다. 하지만 모델링 측면에서 반복되는 데이터를 줄이고, Schema를 담은 정리하기 위해서는 그 중간을 잘 찾아가는 게 개발자/컨설턴트의 역할일 것 같습니다.

 

 

가만 살펴보니 퍼포먼스 저하의 주범은 If문인 경우가 대부분이군요. 조건문을 최소화하는 방향으로 고객사의 화면을 가볍게 만들어봐야겠습니다. 숱을 치는 느낌으로 말이죠 :)

 

이상으로 오늘의 포스팅을 마치겠습니다.

그럼 다음 포스팅까지 안녕히!

반응형

+ Recent posts