티스토리 뷰

반응형

sqldf 패키지  


sqldf() 함수 : R에서 SQL문법을 활용하여 데이터 조작 


sqldf() 함수는 R에서 SQL을 사용하여 데이터 처리가 가능하게 해줍니다.


> install.packages("sqldf")

> install.packages("googleVis")    # Fruits 데이터 셋 사용을 위함

> library(sqldf)

> library(googleVis)


> Fruits

    Fruit Year Location Sales Expenses Profit       Date

1  Apples 2008     West    98       78     20 2008-12-31

2  Apples 2009     West   111       79     32 2009-12-31

3  Apples 2010     West    89       76     13 2010-12-31

...

> sqldf('SELECT * FROM Fruits')

    Fruit Year Location Sales Expenses Profit       Date

1  Apples 2008     West    98       78     20 2008-12-31

2  Apples 2009     West   111       79     32 2009-12-31

3  Apples 2010     West    89       76     13 2010-12-31

...


# where절 사용 시 문자열을 묶기 위해 문자열 양옆 (')작은따움표에 (\)역슬래쉬를 사용해주어야 합니다.

> sqldf('select * from Fruits where Year = \'2008\' ')

    Fruit Year Location Sales Expenses Profit       Date

1  Apples 2008     West    98       78     20 2008-12-31

2 Oranges 2008     East    96       81     15 2008-12-31

3 Bananas 2008     East    85       76      9 2008-12-31

# 혹은 문법에 큰 따움표를 사용해줍니다.

> sqldf("select * from Fruits where Year = '2008' ")

    Fruit Year Location Sales Expenses Profit       Date

1  Apples 2008     West    98       78     20 2008-12-31

2 Oranges 2008     East    96       81     15 2008-12-31

3 Bananas 2008     East    85       76      9 2008-12-31


# R에서 orderBy()함수는 컬럼별 전체 정렬이 안 되기 때문에, sqldf()함수를 사용해서 SQL문으로 order by를 사용하기도 합니다.

> sqldf('select * from Fruits ORDER BY Sales')

    Fruit Year Location Sales Expenses Profit       Date

1 Bananas 2010     East    81       71     10 2010-12-31

2 Bananas 2008     East    85       76      9 2008-12-31

...

8 Oranges 2010     East    98       91      7 2010-12-31

9  Apples 2009     West   111       79     32 2009-12-31


> sqldf('select SUM(Sales) from Fruits')

  SUM(Sales)

1        845

> sqldf('select AVG(Sales) from Fruits')

  AVG(Sales)

1   93.88889


# GROUP BY도 가능

> sqldf('select Fruit, SUM(Sales)

+       FROM Fruits

+       GROUP BY Fruit')

    Fruit SUM(Sales)

1  Apples        298

2 Bananas        260

3 Oranges        287


# Sub Query도 가능

> sqldf('select * FROM Fruits 

+       WHERE Sales > (SELECT Sales

+                      FROM Fruits

+                      WHERE profit > 10)')

   Fruit Year Location Sales Expenses Profit       Date

1 Apples 2009     West   111       79     32 2009-12-31





참고: KIC 캠퍼스 머신러닝기반의 빅데이터분석 양성과정

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday