1. R Project

R Project 는 무료로 광범위한 통계분석을 할 수 있는 프로그램입니다.
https://www.r-project.org/

스트립트를 하나하나 작성하면서 분석해야 하기 때문에 상용 소프트웨어에 비하여 불편한 점이 많습니다.

2. R Studio

이를 좀 더 쉽게 해 줄수 있는 프로그램이 R Studio 입니다.
https://www.rstudio.com/
R Studio 를 사용하면 명령어 자동완성, 데이터 테이블 형식으로 보기 기능 등을 제공하여 쉽게 R Project를 사용할 수 있습니다.
R Studio 는 R Project가 설치되어 있어야 실행 가능합니다.

3. Shiny from R Studio

Shiny from R Studio 를 활용하면 R Project 의 내용을 웹 버전으로 개발할 수 있습니다.
http://shiny.rstudio.com/
사실은 이 방법이 모든 단말기에서 R 프로젝트를 수행할 수 있는 최적의 도구인거 같습니다.
추후에 사용해 보고 별도의 글을 남기겠습니다.

4. Visual Studio용 R 도구

Visual Studio 에서도 2015년 버전 부터 R 도구를 설치해서 사용할 수 있습니다.
https://docs.microsoft.com/ko-kr/visualstudio/rtvs/installing-r-tools-for-visual-studio

Visual Studio와 R을 사용해 본 사람은 다른 언어 프로그래밍과 동일하게 디버깅을 할 수 있습니다.
Visual Studio용 R 도구는 R Project가 없어도 실행 가능합니다.

제가 파악한 Visual Studio용 R 도구는 R 언어를 Visual Studio 에서 실행하는 것이 전부인거 같습니다.
(컨트롤과 연동하는 방법이 있다면 댓글 남겨주세요.)

5. R.Net

윈도우 프로그램 개발에서 R 언어를 사용하기 위해서는 R.Net을 설치해서 사용할 수 있습니다.
http://jmp75.github.io/rdotnet/getting_started/
Visual Studio 2017 기준으로 상단 메뉴의 [도구(T) → Nuget 패키지 관리자(N) → 솔루션용 Nuget 패키지 관리...]을 실행한 다음 R.Net을 검색해서 가장 상단에 있는
R.Net 과 R.Net Community를 설치합니다.

여기서 중요한 점. 개발중인 .net framework 버전이 4.0 이면 R.Net 최신버전(1.7.0) 설치가 불가능합니다.
저는 4.0 버전을 사용중이어서 R.Net 1.5.5 버전을 설치하였습니다.
(.net framework 버전이 4.5 이상이면 R.Net 최신버전(1.7.0)을 설치해 주세요)

R.Net Community 도 개발중인 프레임워크 버전에 따라 설치해 주세요.
개발중인 .net framework 버전이 4.0 이면 R.Net Community 최신버전(1.7.0) 설치가 불가능합니다.
저는 4.0 버전을 사용중이어서 R.Net Community 1.6.5 버전을 설치하였습니다.
(.net framework 버전이 4.5 이상이면 R.Net Community 최신버전(1.7.0)을 설치해 주세요)

R.Net을 사용하려면 컴퓨터에 R Project가 설치되어 있어야 합니다.

그런데 최신 버전(3.5.0)을 설치하면 안되고 이전 버전(3.4.4)을 설치해야 R.Net을 사용할 수 있습니다.
(해당 오류는 나중에 해결될 수 있습니다. 해결되었다면 댓글 남겨주세요.)

이제 아래 문서에서 제공하는 2개의 예제를 실행해 보겠습니다.
http://jmp75.github.io/rdotnet/tut_basic_types/

예제1. HelloWorld

콘솔 프로젝트메인 코드에 아래 내용을 입력합니다.

static void Main(string[] args)
{
    REngine.SetEnvironmentVariables(); // <-- May be omitted; the next line would call it.
    REngine engine = REngine.GetInstance();
    // A somewhat contrived but customary Hello World:
    CharacterVector charVec = engine.CreateCharacterVector(new[] { "Hello, R world!, .NET speaking" });
    engine.SetSymbol("greetings", charVec);
    engine.Evaluate("str(greetings)"); // print out in the console
    string[] a = engine.Evaluate("'Hi there .NET, from the R engine'").AsCharacter().ToArray();
    Console.WriteLine("R answered: '{0}'", a[0]);
    Console.WriteLine("Press any key to exit the program");
    Console.ReadKey();
    engine.Dispose();
}

실행하면 다음과 같은 결과가 콘솔 창에 실행됩니다.

예제2. BasicNumericExample

콘솔 프로젝트메인 코드에 아래 내용을 입력합니다.

static void Main(string[] args)
{
     REngine.SetEnvironmentVariables();
     REngine engine = REngine.GetInstance();
     // REngine requires explicit initialization.
     // You can set some parameters.
     engine.Initialize();

     // .NET Framework array to R vector.
     NumericVector group1 = engine.CreateNumericVector(new double[] { 30.02, 29.99, 30.11, 29.97, 30.01, 29.99 });
     engine.SetSymbol("group1", group1);
     // Direct parsing from R script.
     NumericVector group2 = engine.Evaluate("group2 <- c(29.89, 29.93, 29.72, 29.98, 30.02, 29.98)").AsNumeric();

     // Test difference of mean and get the P-value.
     GenericVector testResult = engine.Evaluate("t.test(group1, group2)").AsList();
     double p = testResult["p.value"].AsNumeric().First();

     Console.WriteLine("Group1: [{0}]", string.Join(", ", group1));
     Console.WriteLine("Group2: [{0}]", string.Join(", ", group2));
     Console.WriteLine("P-value = {0:0.000}", p);

     // you should always dispose of the REngine properly.
     // After disposing of the engine, you cannot reinitialize nor reuse it
     engine.Dispose();
}

실행하면 다음과 같은 결과가 콘솔 창에 실행됩니다.

이제 R Project(3.4.4 버전 이하)가 설치된 컴퓨터에서 윈도우용 프로그래밍을 활용하여 통계 분석을 할 수 있습니다.

Visual Studio용 R 도구와 연결하면 R Project 설치 없이도 윈도우 프로그래밍이 가능해 보이는데 아직 방법을 찾지 못하였습니다.
아시는 분 있으면 댓글 남겨주세요.

감사합니다.

'통계 > R Project' 카테고리의 다른 글

R Project 에서 CSV 파일 불러오기  (0) 2018.06.04

개인정보 유출에 대해 고민해 보신 분들 많으실 껍니다.

특히 영수증과 택배 송장에는 개인정보가 포함되어 있어서 그냥 버리기 망설이게 됩니다.

그래서 생각하고 구매하게 된 제품이 문서 파쇄기입니다.


[구매 모델]

다양한 모델이 있지만 저는 가장 저렴한 수동 방식의 파쇄기를 구매하였습니다.

구매한 지 엄청 오래되었지만 초반에 쓰면서 느낀 점을 말씀드리겠습니다.

네이버에 "문서파쇄기"를 검색하면 나옵니다.

저는 3in1 제품으로 문서, CD, 카드도 파기 가능한 제품으로 구매하였습니다.


[사용기]

1-1. 영수증

가장 많이 사용하였습니다. 초반에는 잘 됩니다. 하지만 똑바로 수직으로 넣기 않고 기울여 넣으면 끝부분이 겹치면서 잘 되지 않습니다.

그리고 많이 사용하다보면 톱니바퀴 사이에 종이가 끼게 되고 돌돌 말리면서 해당 부분은 파쇄가 되지 않거나 틈이 막혀서 종이가 들어가지 않게 됩니다.

이럴 경우 뾰촉한 송곳으로 낀 종이를 빼거나 그것도 잘 안될 경우에는 제품을 분해해서 종이를 제거해야 합니다. 저렴한 제품이어서 나타나는 문제일 수 있습니다.

그리고 보통 몰아서 하게 되는데 시간 엄청 걸립니다.

1-2. 택배 송장

택배 송장은 보통 뒷면이나 주변에 접착물질이 있어서 몇번 갈다보면 영수증 보다 톱니바퀴 사이에 끼게 되는 경우가 더 많습니다. 그리고 빼기도 영수증 보다 어렵습니다.

1-3. A4용지

사이즈가 거의 맞기 때문에 조금안 수평이 안 맞아도 끝 부분이 겹치면서 파쇄가 잘 안되는 경우가 많습니다.

2. CD

거의 사용하지 않습니다. CD를 파쇄하는 일이 거의 발생하지 않더군요. 테스트로 너무 오래 되서 쓸 일이 없는 CD를 한번 해 봤습니다. 잘 되지만 아쉬운 점은 잘게 부수지 않기 때문에 조각을 맞추면 CD표지의 내용은 확인할 수 있습니다. 파쇄하면서 표지도 스크래치 낼 수 있다면 어떨까 생각해 봅니다.

3. 신용카드

이것도 거의 사용하지 않습니다. 그리고 제가 산 제품이 세로로만 파쇄가 가능하다 보니 파쇄 후에도 카드번호가 그대로 노출됩니다.


[결론]

관리할 자신이 있다면 좋은 제품을 사서 쓰세요.


[파기 방법]

그 이후에는 제품을 사용하지 않고 다음과 같은 방법으로 폐기하고 있습니다.

1. 영수증, 택배송장, A4용지 등

손으로 잘게 찢어서 섞은 후 일반쓰레기통에 버립니다.

2. CD 또는 신용카드

가위로 민감한 정보를 확인하지 못할 정도로 잘라서 버립니다.

문서 파쇄기에 대한 의견 있으면 댓글 남겨주세요.

감사합니다.

엑셀 자료를 R Project 로 불러오는 방법에 대해 알아보겠습니다.

엑셀 파일을 바로 가져올 수도 있지만 불러오기 실패, 한글 깨짐 등 문제가 발생할 수 있습니다.
그래서 불러오기 쉽게 excel 파일을 csv 파일로 저장한 다음에 불어보겠습니다.

1. 예제파일을 준비합니다.

    - 파일명 : data1.csv
    - 폴더 : C:\Program Files\R\R-3.2.3\data(csv)
    (※ 예제 파일은 아래 링크를 클릭해서 다운받을 수 있다)
   

data1.csv

2. R 프로그램을 실행후 아래 명령어를 입력합니다.

    - data <- read.csv("C:/Program Files/R/R-3.2.3/data(csv)/data1.csv", 1)
    (※ 파일경로의 폴더 구분은 \ 에서 /로 변경해야 한다.)

3. 자료가 잘 불러졌는지 확인합니다.

감사합니다.

프로그래밍으로 로또 번호를 추출하는 방법을 알아보겠습니다.


우리나라 로또는 1번부터 45번 중에서 6개의 번호를 중복 없이 뽑습니다.


프로그래밍을 할 때는 어떻게 하면 좋을 까요? 다양한 방법이 있지만 제가 생각한 방법은 다음과 같습니다.


2개의 변수를 지정합니다.

(공, 선택된 번호)


ArrayList 또는 List로 1번부터 45번까지의 번호를 만듭니다(공).

그리고 공을 6번 뽑겠습니다.(다음 과정을 6번 반복합니다.)


ArrayList 또는 List 중에서 1개를 선택합니다.

선택된 번호를 저장합니다.

ArrayList 또는 List 에서 선택된 번호를 삭제합니다.


결과 확인: 선택된 번호를 출력합니다.

'프로그래밍 > 알고리즘' 카테고리의 다른 글

BPM(Beats Per Minute) 계산하기  (0) 2018.06.04

BPM은 Beats Per Minute(1분 당 비트 수)의 약자로 음악의 빠른 정도를 측정하기 위해 필요한 단위입니다.

60 BPM 은 1분에 비트가 60개 이므로 1 비트 당 1초의 시간이 배정됨을 알 수 있습니다.


1비트의 시간으로 BPM을 역계산 할 수 있습니다.

계산식은 다음과 같습니다.(아래 식에서 (s) 는 초, second)


BPM = 60(s) / 1비트의 시간(s)


프로그래밍에서는 보통 밀리세컨드(millisecond, ms)를 사용합니다.

위 식을 밀리세컨드로 변환해서 계산하면 다음과 같습니다.


BPM = 60000(ms) / 1비트의 시간(ms)


프로그램에서 탭(Tab) 으로 비트를 세고 BPM을 구하려면 어떻게 해야 될까요?


우선 첫번째 탭의 시간과 두번째 탭의 시간이 필요합니다.

주의할 점: 시간은 반드시 밀리세컨드 단위까지 있어야 합니다.

그리고 두 시간의 차이로 1비트의 시간을 구하면 됩니다. 참 쉽죠?


1비트의 시간(ms) = 두번째 탭의 시간 - 첫번째 탭의 시간

BPM = 60000(ms) / 1비트의 시간(ms)

(위 2줄짜리 식을 1줄로 바꿔도 상관 없습니다.)


4분의 4박자의 1마디 동안의 BPM을 구하려면 어떻게 해야 할 까요?


그러려면 총 5개의 탭 시간이 필요합니다.


4비트의 시간(ms) = 다섯번째 탭의 시간 - 첫번째 탭의 시간

1비트의 시간(ms) = 4비트의 시간(ms) / 4

BPM = 60000(ms) / 1비트의 시간(ms)

(위 3줄짜리 식을 1줄로 바꿔도 상관 없습니다.)


프로그램을 만들 때에는 버튼 하나를 만들어서 탭할 때 마다 시간을 저장하고 조건에 따라 로직을 계산할 수 있도록 하면 되겠네요.

'프로그래밍 > 알고리즘' 카테고리의 다른 글

로또 번호 추출하기  (0) 2018.06.04

+ Recent posts