출처:http://egloos.zum.com/greentec/v/4176464



요즘 coursera 에서 data science 관련 강의들을 듣고 있다. 그런데 통계 프로그램인 R에서 xlsx 파일을 로드하기 위해 xlsx 패키지를 설치하려고 하자 


패키지 ‘rJava’는 로드되어질 수 없습니다

라는 메시지와 함께 로드가 제대로 되지 않았다. rJava를 remove 했다가 다시 설치해봐도 제대로 되지 않고, 구글링을 해보니 한글로는 네 개 정도의 답변이 있었는데 약간 헷갈리게 적혀 있고, 영어로 보니 답변이 잘 달려 있어서 여기에 옮겨 놓는다.


요약하면 R의 32, 64 비트 여부와 Java의 32, 64 비트 여부가 서로 달라서 문제가 일어나는 것이다. R을 켤 때 다음과 같은 메시지가 나오기 때문에 R의 버전은 쉽게 확인할 수 있다.

R version 3.1.2 (2014-10-31) -- "Pumpkin Helmet"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

Java는 보통 C:\Program Files (x86)\Java 에 있으면 32비트이고, C:\Program Files\Java에 있으면 64비트이다. 위 글에도 나온 것처럼 http://www.java.com/en/download/manual.jsp 이 곳에서 32비트와 64비트 중 원하는 Java 버전을 다운받을 수 있다.

모든 것이 완료되면 다음과 같이 깔끔하게 로딩이 완료된다.




출처: http://bigbigdata.tistory.com/78 [데이터 긁긁해]


KoNLP패키지와 wordcloud패키지를 이용해

한글 WordCloud 만들기


빈도수가 높은 단어일수록 크게 나타내는 WordCloud 





[셋팅하기]

KoNLP 패키지와 wordcloud패키지를 설치하고, 로딩한다.  

install.packages("패키지이름")

library(패키지이름)


한글이 저장되있는 세종사전을 사용합니다. R이 한글을 분석할 때 이 사전을 참고해야 하니까. 

useSejongDic()

그리고 사전에 특수한 명칭같은 단어들이 필요하다면 추가해준다. 

mergeUserDic(data.frame("해수욕장","ncn"))



1. 텍스트에서 명사만 골라내기 


명사만 골라낼 때, KoNLP 패키지의 extractNoun 함수를 사용한다. 


① 각 줄에서 단어만 남기기 


data = sapply(txt, extractNoun, USE.NAMES=F)


이렇게 되면 extractNoun함수에 의해서 각 줄마다 단어만 남게 된다. 

예를들면 


1번째 줄 : "초콜렛" "과자" "사먹"

2번째 줄 : ""

3번째 줄 : "저희" "실험"

....


이런식으로 되게 된다. (물론 저렇게 ~~째줄 이런식으로 나오진 않는다. [[1]] [1] .. 이렇게나옴)

아무튼 여러줄로 구성되있는 텍스트 데이터에서 각 줄마다 해당 줄의 단어만 남게 된다는 것이다. 줄별로



② 단어만 가져가기 (단어뭉치 만들기) + 두글자 이상 단어만 남기기 


어쨌든 작업을 하려면 이상태로 있으면 안된다. 작업을 위해서는 단어들만 필요하다. 

줄 순서에 상관없게 단어들만 가져오려면 unlist 메소드를 이용한다. 

 - unlist에 대한 자세한 설명은 여기서 확인하기 (http://rfunction.com/archives/2238)


undata = unlist(data)

이렇게 되면 undata는 순수하게 단어들만 들어있는 단어뭉치가 된다. 


그리고 추가로, 두글자 이상의 단어만 작업하기 위해 필터링을 해준다. 


data = Filter( function(x){nchar(x)>=2},undata)

Filter함수를 이용해 

첫번째 인자인 필터링 조건은 사용자함수로 만들어줬고, 

두번째 인자인 필터링할 데이터에 unlist작업한 단어뭉치를 넣어준다. 



2. 원하지 않는 내용 걸러내기 


gsub 함수를 이용해 원하지 않는 내용을 걸러내버린다. 

원하지 않는 내용을 "" 즉 아무것도 아닌것으로 바꿔버릴거다. 


gsub("원하지않는내용", "뭘로바꿀건지", 데이터)


예를들면 

data = gsub("질문","",data)

이렇게 .. 


그럼 이제 data는 2글자 이상이고 내가 원하지않는 단어는 걸러내버린 단어뭉치가 된다. 



3. 다듬은 단어뭉치를 txt파일로 저장하고 table형태로 다시 가져오기 


이제 이렇게 다듬은 단어뭉터기를 txt파일로 저장하고

write(unlist(data),"new_data.txt")

이 파일을 다시 테이블형식으로 변환해 가져온다

table_data <-read.table("new_data.txt")


테이블 형식으로 가져온 table_data 를 확인해보면

101 피자

102 맛있습니다

103 미래 

...

이런식으로 넘버링 - 단어 이렇게 저장된걸 확인할 수 있다. 


테이블형태로 변환해서 저장해주잣

wordcount<-table(table_data)


4. WordCloud 형태로 그래픽 출력하기


열심히 다듬은거를 wordcloud로 출력한다. 


wordcloud(names(wordcount), freq=wordcount, scale=c(5,1), rot.per=0.25, min.freq=1, random.order=F, random.color=T, colors=brewer.pal(9,"Set1"))


그 전에 화면에 컬러 출력인 colors옵션값의 brewer를 쓰기 위해서는 RColorBrewer 라이브러리를 로딩해야한다. 


이렇게 wordcloud 명령을 내리면 두두두둔 결과물이 뜬다. 


저장은 savePlot으로 해주면 된다. 








위 내용은 R까기 책을 공부하면서 <Part1 비정형데이터로 wordcloud생성하기> 파트를 공부한 내용을 요약한 것입니다!! 


R까기

저자
서진수 지음
출판사
느린생각 | 2014-06-20 출간
카테고리
컴퓨터/IT
책소개
이 책은 이 세상에 다양한 형태로 존재하는 빅데이터를 쉽고 빠르...
가격비교



이미지 출처

http://onertipaday.blogspot.kr/2011/07/word-cloud-in-r.html



출처: http://wsyang.com/2014/02/introduction-to-dplyr/


데이터 분석에서 가장 많은 시간을 차지하는 것은 데이터를 분석에 필요한 형태로 만드는 데이터 전처리 과정입니다. 우리가 공부하면서 보게 되는 책에 있는 예제는 말 그대로 예제일 뿐이지 실제 데이터 분석 업무에서는 바로 모델링이나 시각화에 적합한 형태의 데이터를 얻기 위해서는 지루하고 복잡한 과정을 거치게 됩니다. 데이터 분석 프로젝트에 걸리는 시간의 절반 이상은 데이터의 전처리, 변환, 필터링이 차지하게 되는 것이 보통입니다.

R 언어 자체에도 데이터 전처리를 위한 많은 함수가 포함되어 있습니다. 여기에 각종 패키지의 도움을 받는다면 더욱 쉽고 빠르게 전처리 과정을 마칠 수가 있습니다. 이번 포스팅에서는 최근 dplyr이라는 패키지가 새로 발표되어 인터넷상에서 좋은 평가를 받고 있기에 패키지 안에 포함된 예제를 이용하여 기본 사용법을 정리해 보도록 하겠습니다.

dplyr 패키지?

dplyr 패키지는 Hadley Wickham가 작성한 데이터 처리에 특화된 R 패키지입니다. 이 분이 지금까지 작성한 유명한 R 패키지로는 ggplot2plyrreshape2등이 있으며 이미 많은 분들이 사용하고 있으리라 생각합니다.

데이터 처리에 특화된 유용한 패키지로는 역시 Hadley Wickham이 만든 plyr이라는 패키지가 있었습니다. 그러나 plyr은 편리하긴 했지만 모든 함수가 R로 작성되어서 처리 속도가 느리다는 단점이 있었습니다. 이에 반해dplyr은 C++로 작성되어 불필요한 함수를 불러오지 않기 때문에 매우 빠른 처리 속도를 자랑합니다.

dplyr 패키지는 데이터 프레임을 처리하는 함수군으로 구성되어 있습니다. 하지만 그 밖에도 다음 형식의 데이터를 이용할 수 있습니다.

  • data.table : data.table 패키지와 사용
  • 각종 데이터베이스 : 현재 MySQL, PostgreSQL, SQLite, BigQuery를 지원
  • 데이터 큐브 : dplyr 패키지 내부에 실험적으로 내장됨

dplyr 패키지 사용법

먼저 포스팅에서 소개할 dplyr 패키지와 데이터 셋 hflight를 설치하고 함수 library()를 이용해 함수군 및 데이터를 불러옵니다.

> install.packages(c("dplyr", "hflights"))
> library(dplyr)
> library(hflights)

dplyr 패키지의 기본이 되는 것은 다음 5개 함수입니다.

함수명내용유사함수
filter()지정한 조건식에 맞는 데이터 추출subset()
select()열의 추출data[, c(“Year”, “Month”)]
mutate()열 추가transform()
arrange()정렬order(), sort()
summarise()집계aggregate()

여기에 group_by() 함수를 추가로 이용하면 그룹별로 다양한 집계를 할 수 있습니다.

예제에 사용된 데이터는 미국 휴스턴에서 출발하는 모든 비행기의 2011년 이착륙기록이 수록된 것으로 227,496건의 이착륙기록에 대해 21개 항목을 수집한 데이터입니다.

> dim(hflights)
    ## [1] 227496     21

hflights 데이터는 관측치의 수가 많기 때문에 tbl_df 형식으로 변환해서 사용하는 것을 추천합니다.

> hflights_df <- tbl_df(hflights)
> hflights_df
## Source: local data frame [227,496 x 21]
## 
##      Year Month DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier
## 5424 2011     1          1         6    1400    1500            AA
## 5425 2011     1          2         7    1401    1501            AA
## 5426 2011     1          3         1    1352    1502            AA
## 5427 2011     1          4         2    1403    1513            AA
## 5428 2011     1          5         3    1405    1507            AA
## 5429 2011     1          6         4    1359    1503            AA
## 5430 2011     1          7         5    1359    1509            AA
## 5431 2011     1          8         6    1355    1454            AA
## 5432 2011     1          9         7    1443    1554            AA
## 5433 2011     1         10         1    1443    1553            AA
## ..    ...   ...        ...       ...     ...     ...           ...
## Variables not shown: FlightNum (int), TailNum (chr), ActualElapsedTime
##   (int), AirTime (int), ArrDelay (int), DepDelay (int), Origin (chr), Dest
##   (chr), Distance (int), TaxiIn (int), TaxiOut (int), Cancelled (int),
##   CancellationCode (chr), Diverted (int)

이렇게 하면 모든 데이터를 화면에 출력하는 실수를 방지할 수 있습니다.

함수 filter()를 이용한 데이터 추출

함수 filter()는 조건에 따라 행(row)을 추출합니다. 사용방법은 첫 번째 인수로 추출 대상이 되는 데이터 프레임을 지정하고, 두 번째 인수로 추출하고 싶은 행의 조건을 지정합니다. 이 서술방법은 dplyr 패키지의 다른 기본함수에도 똑같이 적용됩니다. AND 조건문 콤마(,)로 구별하거나 & 연산자를 사용해도 되며 OR 조건문은 | 연산자를 이용합니다.

> # 1월 1일 데이터 추출
> filter(hflights_df, Month == 1, DayofMonth == 1)
## Source: local data frame [552 x 21]
## 
##    Year Month DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1  2011     1          1         6    1400    1500            AA       428
## 2  2011     1          1         6     728     840            AA       460
## 3  2011     1          1         6    1631    1736            AA      1121
## 4  2011     1          1         6    1756    2112            AA      1294
## 5  2011     1          1         6    1012    1347            AA      1700
## 6  2011     1          1         6    1211    1325            AA      1820
## 7  2011     1          1         6     557     906            AA      1994
## 8  2011     1          1         6    1824    2106            AS       731
## 9  2011     1          1         6     654    1124            B6       620
## 10 2011     1          1         6    1639    2110            B6       622
## ..  ...   ...        ...       ...     ...     ...           ...       ...
## Variables not shown: TailNum (chr), ActualElapsedTime (int), AirTime
##   (int), ArrDelay (int), DepDelay (int), Origin (chr), Dest (chr),
##   Distance (int), TaxiIn (int), TaxiOut (int), Cancelled (int),
##   CancellationCode (chr), Diverted (int)
> # 1월 혹은 2월 데이터 추출
> filter(hflights_df, Month == 1 | Month == 2)
## Source: local data frame [36,038 x 21]
## 
##    Year Month DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1  2011     1          1         6    1400    1500            AA       428
## 2  2011     1          2         7    1401    1501            AA       428
## 3  2011     1          3         1    1352    1502            AA       428
## 4  2011     1          4         2    1403    1513            AA       428
## 5  2011     1          5         3    1405    1507            AA       428
## 6  2011     1          6         4    1359    1503            AA       428
## 7  2011     1          7         5    1359    1509            AA       428
## 8  2011     1          8         6    1355    1454            AA       428
## 9  2011     1          9         7    1443    1554            AA       428
## 10 2011     1         10         1    1443    1553            AA       428
## ..  ...   ...        ...       ...     ...     ...           ...       ...
## Variables not shown: TailNum (chr), ActualElapsedTime (int), AirTime
##   (int), ArrDelay (int), DepDelay (int), Origin (chr), Dest (chr),
##   Distance (int), TaxiIn (int), TaxiOut (int), Cancelled (int),
##   CancellationCode (chr), Diverted (int)

함수 arrange()를 이용한 정렬

함수 arrange()는 지정한 열을 기준으로 작은 값으로부터 큰 값의 순으로 데이터를 정렬합니다. 역순으로 정렬할 때는 함수 desc()를 함께 사용합니다.

> # 데이터를 ArrDelay, Month, Year 순으로 정렬
> arrange(hflights_df, ArrDelay, Month, Year)
## Source: local data frame [227,496 x 21]
## 
##    Year Month DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1  2011     7          3         7    1914    2039            XE      2804
## 2  2011    12         25         7     741     926            OO      4591
## 3  2011     8         21         7     935    1039            OO      2001
## 4  2011     8         31         3     934    1039            OO      2040
## 5  2011     8         26         5    2107    2205            OO      2003
## 6  2011    12         24         6    2129    2337            CO      1552
## 7  2011     8         28         7    2059    2206            OO      2003
## 8  2011     8         29         1     935    1041            OO      2040
## 9  2011     8         18         4     939    1043            OO      2001
## 10 2011    12         24         6    2117    2258            CO      1712
## ..  ...   ...        ...       ...     ...     ...           ...       ...
## Variables not shown: TailNum (chr), ActualElapsedTime (int), AirTime
##   (int), ArrDelay (int), DepDelay (int), Origin (chr), Dest (chr),
##   Distance (int), TaxiIn (int), TaxiOut (int), Cancelled (int),
##   CancellationCode (chr), Diverted (int)
 
> # 데이터를 Month의 큰 값으로 부터 작은 값 순으로 정렬
> arrange(hflights_df, desc(Month))
## Source: local data frame [227,496 x 21]
## 
##    Year Month DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1  2011    12         15         4    2113    2217            AA       426
## 2  2011    12         16         5    2004    2128            AA       426
## 3  2011    12         18         7    2007    2113            AA       426
## 4  2011    12         19         1    2108    2223            AA       426
## 5  2011    12         20         2    2008    2107            AA       426
## 6  2011    12         21         3    2025    2124            AA       426
## 7  2011    12         22         4    2021    2118            AA       426
## 8  2011    12         23         5    2015    2118            AA       426
## 9  2011    12         26         1    2013    2118            AA       426
## 10 2011    12         27         2    2007    2123            AA       426
## ..  ...   ...        ...       ...     ...     ...           ...       ...
## Variables not shown: TailNum (chr), ActualElapsedTime (int), AirTime
##   (int), ArrDelay (int), DepDelay (int), Origin (chr), Dest (chr),
##   Distance (int), TaxiIn (int), TaxiOut (int), Cancelled (int),
##   CancellationCode (chr), Diverted (int)

함수 select(), mutate()를 이용한 열의 조작

함수 select()는 열(column)을 추출합니다. 복수의 열을 추출할 때에는 콤마(,)로 구분하며 인접한 열을 추출할 때에는 : 연산자를 이용할 수 있습니다.

지정한 열 이외의 다른 열을 추출하고 싶을 때는 괄호 안에 제외하고 하고 싶은 열의 이름을 지정하고 괄호 앞에 -부호를 붙여줍니다.

> # Year, Month, DayOfWeek 열을 추출
> select(hflights_df, Year, Month, DayOfWeek)
## Source: local data frame [227,496 x 3]
## 
##      Year Month DayOfWeek
## 5424 2011     1         6
## 5425 2011     1         7
## 5426 2011     1         1
## 5427 2011     1         2
## 5428 2011     1         3
## 5429 2011     1         4
## 5430 2011     1         5
## 5431 2011     1         6
## 5432 2011     1         7
## 5433 2011     1         1
## ..    ...   ...       ...
> # Year부터 DayOfWeek까지 추출(Year, Month, DayofMonth, DayofWeek)
> select(hflights_df, Year:DayOfWeek)
## Source: local data frame [227,496 x 4]
## 
##      Year Month DayofMonth DayOfWeek
## 5424 2011     1          1         6
## 5425 2011     1          2         7
## 5426 2011     1          3         1
## 5427 2011     1          4         2
## 5428 2011     1          5         3
## 5429 2011     1          6         4
## 5430 2011     1          7         5
## 5431 2011     1          8         6
## 5432 2011     1          9         7
## 5433 2011     1         10         1
## ..    ...   ...        ...       ...
> # Year부터 DayOfWeek를 제외한 나머지 열을 추출
> select(hflights_df, -(Year:DayOfWeek))
## Source: local data frame [227,496 x 17]
## 
##      DepTime ArrTime UniqueCarrier FlightNum TailNum ActualElapsedTime
## 5424    1400    1500            AA       428  N576AA                60
## 5425    1401    1501            AA       428  N557AA                60
## 5426    1352    1502            AA       428  N541AA                70
## 5427    1403    1513            AA       428  N403AA                70
## 5428    1405    1507            AA       428  N492AA                62
## 5429    1359    1503            AA       428  N262AA                64
## 5430    1359    1509            AA       428  N493AA                70
## 5431    1355    1454            AA       428  N477AA                59
## 5432    1443    1554            AA       428  N476AA                71
## 5433    1443    1553            AA       428  N504AA                70
## ..       ...     ...           ...       ...     ...               ...
## Variables not shown: AirTime (int), ArrDelay (int), DepDelay (int), Origin
##   (chr), Dest (chr), Distance (int), TaxiIn (int), TaxiOut (int),
##   Cancelled (int), CancellationCode (chr), Diverted (int)

함수 mutate()는 열을 추가할 때 사용합니다.

비슷한 기능을 하는 함수로 transform()이 있지만, 함수 mutate()는 함수에서 새로 만든 열을 같은 함수 안에서 바로 사용할 수 있는 장점이 있습니다. 글보다는 예제를 보는 것이 이해가 빠를 것 같습니다.

> # 생성된 열 gain을 gain_per_hour의 계산에 사용할 수 있음
> mutate(hflights_df, gain = ArrDelay - DepDelay, gain_per_hour = gain/(AirTime/60))
## Source: local data frame [227,496 x 23]
## 
##    Year Month DayofMonth DayOfWeek DepTime ArrTime UniqueCarrier FlightNum
## 1  2011     1          1         6    1400    1500            AA       428
## 2  2011     1          2         7    1401    1501            AA       428
## 3  2011     1          3         1    1352    1502            AA       428
## 4  2011     1          4         2    1403    1513            AA       428
## 5  2011     1          5         3    1405    1507            AA       428
## 6  2011     1          6         4    1359    1503            AA       428
## 7  2011     1          7         5    1359    1509            AA       428
## 8  2011     1          8         6    1355    1454            AA       428
## 9  2011     1          9         7    1443    1554            AA       428
## 10 2011     1         10         1    1443    1553            AA       428
## ..  ...   ...        ...       ...     ...     ...           ...       ...
## Variables not shown: TailNum (chr), ActualElapsedTime (int), AirTime
##   (int), ArrDelay (int), DepDelay (int), Origin (chr), Dest (chr),
##   Distance (int), TaxiIn (int), TaxiOut (int), Cancelled (int),
##   CancellationCode (chr), Diverted (int), gain (int), gain_per_hour (dbl)
> # 생성된 열 gain을 gain_per_hour의 계산에 사용할 수 없음
> transform(hflights, gain = ArrDelay - DepDelay, gain_per_hour = gain/(AirTime/60))
    ## Error: object "gain"; not found

함수 summarise()를 이용한 집계

함수 summarise()는 mean(), sd(), var(), median() 등의 함수를 지정하여 기초 통계량을 구할 수 있습니다. 결과값이 데이터 프레임 형식으로 돌아오는 것에 주의하세요.

> # 평균 출발지연시간 계산
> summarise(hflights_df, delay = mean(DepDelay, na.rm = TRUE))
## Source: local data frame [1 x 1]
## 
##   delay
## 1 9.445

함수 group_by()를 이용한 그룹화

함수 group_by()에서 지정한 열의 수준(level)별로 그룹화된 결과를 얻을 수 있습니다.
예를 들어 비행편수 20편 이상, 평균 비행 거리 2,000마일 이상인 항공사별 평균 연착시간을 계산하여 그림으로 표현하는 코드는 다음과 같습니다.

> planes <- group_by(hflights_df, TailNum)
> delay <- summarise(planes, count = n(), dist = mean(Distance, na.rm = TRUE), 
+     delay = mean(ArrDelay, na.rm = TRUE))
> delay <- filter(delay, count > 20, dist < 2000)
> 
> library(ggplot2)
> ggplot(delay, aes(dist, delay)) + geom_point(aes(size = count), alpha = 1/2) + 
+     geom_smooth() + scale_size_area()

center

함수 group_by()의 더 많은 예제는 이 글의 참고에서 언급한 패키지 안에 포함된 소개문서를 참고하세요.

dplyr 패키지의 백미, chain() 함수

함수 chain() 혹은 간단히 %.%를 이용함으로써 각 조작을 연결해서 한 번에 수행할 수 있습니다. 즉, 최종 결과를 얻기 위해 임시로 데이터 프레임을 만들지 않아도 되는 편리한 기능입니다. 개인적으로는 dplyr 패키지의 백미라고 생각합니다.

지금까지 일관되게 첫 번째 인수에 데이터 프레임을 지정했습니다. 그러나 %.%로 연결하면 가장 먼저 데이터 프레임을 지정하면 그다음부터는 인수를 생략할 수 있을 뿐 아니라 앞선 함수의 결과(데이터 프레임)를 뒤에 오는 함수의 입력값으로 사용하게 됩니다. 역시 예제를 실행해 확인해 보는 것이 좋겠죠.

> a1 <- group_by(hflights, Year, Month, DayofMonth)
> a2 <- select(a1, Year:DayofMonth, ArrDelay, DepDelay)
> a3 <- summarise(a2, arr = mean(ArrDelay, na.rm = TRUE), dep = mean(DepDelay, 
+     na.rm = TRUE))
> a4 <- filter(a3, arr > 30 | dep > 30)

위 예제는 hflights 데이터를 a1) Year, Month, DayofMonth의 수준별로 그룹화, a2) Year부터 DayofMonth, ArrDelay, DepDealy 열을 선택, a3) 평균 연착시간과 평균 출발 지연시간을 구하고, a4) 평균 연착시간과 평균 출발지연시간이 30분 이상인 데이터를 추출한 결과입니다. 위 예제를 %.% 함수를 이용하면 다음과 같습니다.

> hflights_df %.% group_by(Year, Month, DayofMonth) %.% summarise(arr = mean(ArrDelay, 
+     na.rm = TRUE), dep = mean(DepDelay, na.rm = TRUE)) %.% filter(arr > 30 | 
+     dep > 30)
## Source: local data frame [14 x 5]
## Groups: Year, Month
## 
##    Year Month DayofMonth   arr   dep
## 1  2011    12         31 46.48 54.17
## 2  2011    12         29 26.30 30.79
## 3  2011    10          9 61.90 59.53
## 4  2011     9         29 39.20 32.50
## 5  2011     7         29 29.56 31.87
## 6  2011     6         22 65.52 62.31
## 7  2011     5         20 37.03 26.55
## 8  2011    11         15 43.68 39.23
## 9  2011     5         12 69.52 64.52
## 10 2011     4          4 38.72 27.95
## 11 2011     4         25 37.80 22.26
## 12 2011     3         14 46.64 36.14
## 13 2011     3          3 35.13 38.20
## 14 2011     2          4 44.08 47.17
 

맺음말

Hadley Wickham가 작성한 여러 패키지를 쓰다 보면 R이라는 통계분석에 특화된 언어(DSL; Domain specific language)의 영역에서 자신의 가치관을 반영한 패키지를 연달아서 내놓는 열정에 감탄하게 됩니다. 사용자 입장에서야 편리하고 빠른 패키지를 만들어 주어서 고마울 뿐이죠.

패키지 안에 포함된 소개문서는 패키지 인스톨 후,

    > vignette("introduction", package = "dplyr")

을 실행하거나 R project 사이트의 Introduction to dplyr에서 확인할 수 있습니다.

출처:http://icodebroker.tistory.com/3595



■ subset 함수 : 데이터 추출하기

----------------------------------------------------------------------------------------------------

▶ 매출 data.frame에서 매출월이 1월인 데이터 추출하기

 

매출 = read.csv("data_win.csv")

 

subset(매출, 매출월 == 1)

 

 

 

▶ 매출 data.frame에서 요일이 월요일인 데이터 추출하기

 

매출 = read.csv("data_win.csv")

 

subset(매출, 요일 == "월")

 

 

 

▶ 매출 data.frame에서 성별이 여자인 데이터 추출하기

 

매출 = read.csv("data_win.csv")

 

subset(매출, 성별 == "여")

 

 

 

▶ 매출 data.frame에서 매출월이 구매건수가 40000건보다 큰 데이터 추출하기

 

매출 = read.csv("data_win.csv")

 

subset(매출, 구매건수 > 40000)

 

 

 

▶ 매출 data.frame에서 구매건수가 100건보다 작거나 40000건보다 큰 데이터 추출하기

 

매출 = read.csv("data_win.csv")

 

subset(매출, 구매건수 < 100 | 구매건수 > 40000)

 

 

 

▶ 매출 data.frame에서 요일이 월요일, 화요일, 수요일인 데이터 추출하기

 

매출 = read.csv("data_win.csv")

 

subset(매출, 요일 %in% c("월", "화", "수"))

 

 

 

▶ 매출 data.frame에서 요일이 월요일, 화요일, 수요일이 아닌 데이터 추출하기

 

매출 = read.csv("data_win.csv")

 

subset(매출, !(요일 %in% c("월", "화", "수"))

----------------------------------------------------------------------------------------------------

출처:http://stackoverflow.com/questions/26082405/error-in-listing-packages-in-rstudio


Error in nchar(homeDir) : invalid multibyte string, element 1 오류 해결하기



Sys.setlocale(category = "LC_ALL", locale = "us")
Rstudio console에 위의 문장을 입력하면 된다.


  1. ee 2016.09.17 12:04

    와 대박!! 말씀하신걸로 입력했더니 해결됬어요!!!!!! 정말 감사합니다 ^^
    어떤 매커니즘으로 문제가 해결되는건지도 혹시 여쭤봐도 되나요?

    • Favicon of https://horae.tistory.com 호레 2016.09.19 09:11 신고

      일단 에러가 나는 원인은 rstudio 디렉토리에 한글(multibyte)이 포함되어 있어서 에러가 나는거구요~


      rstudio는 기본적으로 locale정보를 얻어와서 번역을 진행합니다. default로 ko_KR.UTF-8와 같이 선언이 되어 있습니다.

      하지만 rstudio는 ko_KR에 대해 호환이 잘안되기 때문에 locale를 us로 변환을 하여 진행을 하게되면 에러없이 진행할 수 있습니다.

      http://egloos.zum.com/entireboy/v/4835219

  2. 와대박사건 2017.10.12 23:49

    여기저기 찾아봤는데 이걸로 한방에 해결됐네요 ㅠ 진짜 감사드립니다.


소스코드




데이터 파일


데이터 파일




결과 값




출처: https://stat.ethz.ch/pipermail/r-help/2007-February/125860.html



> iris[sample(nrow(iris), 2), ]
   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
96          5.7         3.0          4.2         1.2 versicolor
17          5.4         3.9          1.3         0.4     setosa



# Select 5 random rows

> iris[sample(nrow(iris), 5), ]
   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
83          5.8         2.7          3.9         1.2 versicolor
12          4.8         3.4          1.6         0.2     setosa
63          6.0         2.2          4.0         1.0 versicolor
80          5.7         2.6          3.5         1.0 versicolor
49          5.3         3.7          1.5         0.2     setosa





출처: https://stat.ethz.ch/pipermail/r-help/2005-August/077420.html



s1 <- "R-"
s2 <- "project"
paste(s1, s2, sep = "")




+ Recent posts