2015年8月31日月曜日

R 条件式にもとづいて列の内容を変える

【目的】 条件式にもとづいて列の内容を変える
【方法】 df.x[dfx$x == 1, ]$new <- "x"

#サンプルデータ作成
v.x1 <- c(1,2,3,4,5,6,7,8,9,10)
v.x2 <- c("a","a","b","b","b","c","c","c","c","c")
v.x3 <- c(1000,900,800,700,600,500,400,300,200,100)
df.x <- data.frame(id = v.x1, item = v.x2, price =v.x3)
> df.x
   id item price
1   1    a  1000
2   2    a   900
3   3    b   800
4   4    b   700
5   5    b   600
6   6    c   500
7   7    c   400
8   8    c   300
9   9    c   200
10 10    c   100

#新たな列を追加
df.x$new <- "0"
> df.x
   id item price new
1   1    a  1000   0
2   2    a   900   0
3   3    b   800   0
4   4    b   700   0
5   5    b   600   0
6   6    c   500   0
7   7    c   400   0
8   8    c   300   0
9   9    c   200   0
10 10    c   100   0

 #条件式
df.x[df.x$item == "c" & df.x$price >= 500,]$new <- "ok"
> df.x
   id item price new
1   1    a  1000   0
2   2    a   900   0
3   3    b   800   0
4   4    b   700   0
5   5    b   600   0
6   6    c   500  ok
7   7    c   400   0
8   8    c   300   0
9   9    c   200   0
10 10    c   100   0

2015年8月28日金曜日

R 棒グラフを描く(barplot)

【目的】 Rで棒グラフを描く
【方法】 barplot()

#サンプルデータ作成
v.x1 <- c(1,2,3,4,5,6,7,8,9,10)
v.x2 <- c("a","a","b","b","b","c","c","c","c","c")
v.x3 <- c(1000,900,800,700,600,500,400,300,200,100)
df.x <- data.frame(id = v.x1, item = v.x2, price =v.x3)

#先頭6行のデータを表示
head(df.x)
> head(df.x)
  id item price
1  1    a  1000
2  2    a   900
3  3    b   800
4  4    b   700
5  5    b   600
6  6    c   500

#最小値、第1四分位点、中央値、平均値、第3四分位点、最大値(カテゴリカル変数は度数)
summary(df.x)
> summary(df.x)
       id        item      price     
 Min.   : 1.00   a:2   Min.   : 100  
 1st Qu.: 3.25   b:3   1st Qu.: 325  
 Median : 5.50   c:5   Median : 550  
 Mean   : 5.50         Mean   : 550  
 3rd Qu.: 7.75         3rd Qu.: 775  
 Max.   :10.00         Max.   :1000  

#xtabs:カテゴリーの度数をデータとして得る
data.item <- xtabs(~ item, data = df.x)
data.item
> data.item
item
a b c 
2 3 5 

#棒グラフ
barplot(data.item)

#並び替え 降順:decreasing = TRUE
data.item2 <- data.item[order(data.item, decreasing = TRUE)]
barplot(data.item2)


Rでの棒グラフ作図に関するより詳しい説明
http://stat.biopapyrus.net/graph/barplot.html

R 日時の差を計算

set.date1 <- "2015-01-01 00:00:00"
set.date2 <- "2015-01-02 01:00:00"

as.POSIXct(set.date1) - 1
as.Date(set.date1) - 1
> as.POSIXct(set.date1) - 1
[1] "2014-12-31 23:59:59 JST"
> as.Date(set.date1) - 1
[1] "2014-12-31"

as.POSIXct(set.date2) - 1
as.Date(set.date2) - 1
> as.POSIXct(set.date2) - 1
[1] "2015-01-02 00:59:59 JST"
> as.Date(set.date2) - 1
[1] "2015-01-01"

as.POSIXct(set.date2) - as.POSIXct(set.date1)
as.Date(set.date2) - as.Date(set.date1)
> as.POSIXct(set.date2) - as.POSIXct(set.date1)
Time difference of 1.041667 days
> as.Date(set.date2) - as.Date(set.date1)
Time difference of 1 days







R 順番を変える(arrange)

【目的】 指定した列を抽出する
【方法】 arrange(df, v1, v2) で 昇順、arrange(df, desc(column))で降順
【補足】 library(dplyr)が必要

#テスト用データフレーム作成
v.x1 <- c(1,2,3,4)
v.x2 <- c("a","a","b","b")
df.x <- data.frame(id = v.x1, item = v.x2)

df.x

> df.x
  id item
1  1    a
2  2    a
3  3    b
4  4    b

df.x <- arrange(df.x, desc(id))
df.x

> df.x <- arrange(df.x, desc(id))
> df.x
  id item
1  4    b
2  3    b
3  2    a
4  1    a


df.x <- arrange(df.x, id)
df.x

> df.x <- arrange(df.x, id)
> df.x
  id item
1  1    a
2  2    a
3  3    b
4  4    b

R 列名を変更する(rename)

【目的】 列名を変更する
【方法】 rename(df, after = before)
【補足】 library(dplyr)が必要

#テスト用データフレーム作成
v.x1 <- c(1,2,3,4)
v.x2 <- c("a","a","b","b")
df.x <- data.frame(id = v.x1, item = v.x2)

df.x

> df.x
  id item
1  1    a
2  2    a
3  3    b
4  4    b

rename(df.x, id2 = id)

> rename(df.x, id2 = id)
  id2 item
1   1    a
2   2    a
3   3    b
4   4    b

R 指定した列を選択(select)

【目的】 指定した列を抽出する
【方法】 select(df, v1, v2)
【補足】 library(dplyr)が必要

#テスト用データフレーム作成

v.x1 <- c(1,2,3,4)
v.x2 <- c("a","a","b","b")
df.x <- data.frame(id = v.x1, item = v.x2)

df.x

> df.x
  id item
1  1    a
2  2    a
3  3    b
4  4    b

select(df.x, id)
> select(df.x, id)
  id
1  1
2  2
3  3
4  4

R 条件に合うデータを抽出する(filter)

【目的】 条件に合うデータを抽出する
【方法】 filter(df, v == 0 )
【補足】 library(dplyr)が必要

 #テスト用データフレーム作成

v.x1 <- c(1,2,3,4)
v.x2 <- c("a","a","b","b")
df.x <- data.frame(id = v.x1, item = v.x2)

df.x

> df.x
  id item
1  1    a
2  2    a
3  3    b
4  4    b

filter(df.x, item == "a")

> filter(df.x, item == "a")
  id item
1  1    a
2  2    a

2015年8月20日木曜日

データ分析役立ちリンク


  • Rと樹木モデル
methodのオプションなど丁寧に説明されていて分かりやすい
http://www1.doshisha.ac.jp/~mjin/R/19.html

  • R と Treasure Data で Web サーバのアクセスログ解析
RからTDに接続する方法が紹介
http://hiratake55.hatenablog.com/entry/2013/12/05/210813

  • Rのグラフィックスパラメータ
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/53.html


  • Kibanaでログ分析を1年続けてみたら業務システムの保守と運用が捗った
  • Kibanaでできることの概観を知るのに役立つ
    https://speakerdeck.com/exoego/how-and-why-i-have-been-leveraging-kibana-for-devops

    • ビックデータ時代のログ収集管理ツールFluentdのインストールと使い方
    上記について分かりやすく説明されている
    http://oxynotes.com/?p=7596