のののにっき

何か面白いと思ったことや、自分の備忘録のためにブログをたまに綴ります。 Stata関連が多くなるかも。

OwnCloudのインストール

数年前、自宅サーバーやレンタルサーバー(正確にはVPSと言うらしい)をDropbox代わりに使おうと思って情報を探したが良い方法を見つけられなかった。

今回改めて探した所OwnCloudという素敵なサービスがあるようなので早速使ってみた。

現在の課題: CoreserverというVPSにPukiwikiをインストールして自分用メモサーバーとして使っている。
しかし、有料サーバーなのに、容量が沢山残っていてもったいない!

解決案: OwnCloudをインストールして、VPSをDropboxライクに使う!

インストールは、Coreserverの場合、多少工夫が要るが非常に簡単にインストールできたのでここにその方法を忘れないように記録しておく。

手順
1. ここをクリックするとファイルがダウンロードできます。ファイル名はsetup-owncloud.phpになります。上記ファイルは、ここからWeb Installerを選択して出てくるウインドウからもダウンロードできます。

2. そのままUpするとCoreserverではSSLでないとインストール出来ないため、上記setup-owncloud.phpをテキストエディタで開いて139行目の
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);


curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

と書換て同じ名前で上書き保存をします。

3. 上記で編集したファイルを自分のVPSの好きな場所にUpします。FTPでUpしても良いのですが、Coreserverは、ファイルマネージャーという機能があり、FTPソフトを使わずにWebブラウザからサーバーにファイルをUpできます。

4. ここからは、公式サイトにある通り、今Upしたファイルをブラウザで呼び出します。すると、以降は対話的にインストールが完了します。しかし、このままでは上手く行きません。Coreserverは、PHPの標準バージョンが5.4でないといけないため、setup-owncloud.phpファイルが置いてある場所に.htaccessファイルを作成し、そのファイル内に下記一行を記入します。
AddHandler application/x-httpd-php54cgi .php

Coreserverは、この記載をすることで、CGI版PHP5.4として動かすことが出来ます。
参考リンク

5. これ以降は無事にインストールが進みますが、最後にユーザー登録の段階で次のようなエラーが出るはずです。
No input file specified

そこで、インストールして出来た(特に名前の変更などをしていなければ) owncloudというフォルダ直下に自動的に作成されている.htaccessを編集し、どこでも良いので次の一行を追加しておきます。
mod_gzip_on Off


これで、上手くOwnCloudが使えるようになるはずです。

この後は、OwnCloudの詳細設定でデータフォルダの位置を変更したり、OwnCloudのアプリをインストールし、暗号化をしたりして、セキュリティを強化することが出来ます。

尚、PukiwikiのPHPとOwnCloudのPHPのバージョンが違ってどちらかが動かなくなることがあるので、
その時は、owncloudフォルダ直下の.htaccess(先ほどステップ5で編集したものですね)に下記記載をして、インストールの時に使ったステップ4の.htaccessは削除すると良いでしょう。
AddHandler application/x-httpd-php54cgi .php

Stataで重複した値を探す。

久しぶりです。
Stata使っていますか?

今日は重複した値の数をカウントするコマンドを紹介します。
自分の備忘録のためなんですけどね。
そんな素晴らしいコマンドは、
duplicates tag 変数名, gen(変数名の重複数を記録する新しい変数名)
です!

例えば
input a b c
1. 3 4 5
2. 3 3 3
3. 3 3 3
4. 5 3 2
5. 7 6 5
6. 3 1 1
7. end
とデータを入力して
duplicates tag a, gen(a_dup)
として、
list a_dupとすると
+---+
| d |
|---|
1. | 3 |
2. | 3 |
3. | 3 |
4. | 0 |
5. | 0 |
|---|
6. | 3 |
+---+
と出てきます。
つまり、ここでいうと1,2,3,6が同じ値で重複数は3と言うことが分かります。

その他に
duplicate report
duplicate list
duplicate drop
コマンドがあります。

http://www.youtube.com/watch?v=KhAB-6TkzDY
Youtubeのこの講義は分かりやすかったです。

では、またいつか。


Stataのテクニック

本当に久しぶりの投稿です。やっぱり根気が無いのかな。
今日は、Stataの覚書と言うか、マニュアルに載っていないようなお得なテクニックを紹介します。

Stataはコメントアウトをするために
*これ以下
//これ以下
/* この間 */
以上3種類の方法が良く知られています。
特に3番目の/* */これは使い勝手が良く、複数に渡るコマンドをコメントアウトする常套手段です。

3番目の方法でほとんど事足りますが、時々/* */の中にさらにコメントアウトがあると
お互いの関係が分かりにくくなります。
そこで紹介する方法は、コメントアウト全体をプログラムにしてしまう方法です。

program name_nandemo_OK
ここにコメントがならぶ
end
このコメントはプログラムの中身になりますが、プログラムが実行されるまでは中身が
解釈されることはないのでエラーは起きません。

プログラムを使う、もう一つのテクニックは、出力の制御です。
Stataは入力したコマンドがResults画面に出力されてしまいたいので
例えば、
1
2
3
と表示したい時に
di "1"
di "2"
di "3"
を実行しますが、次のように表示されてしまいます。
. di "1"
1

. di "2"
2

. di "3"
3
これを防ぐにはプログラムを使って
program display123
di "1"
di "2"
di "3"
end
として
display123を入力すれば
. display123
1
2
3
と期待通りに結果が帰ってきます!
ではまたいつかー!

OS10.6.5のMacBookを64bitで起動する!

ポチッと応援をお願いします!人気ブログランキングへ

またまた、久しぶりのブログ更新になってしまいましたが、今回は、ごく一部の人にしか関係の無い記事です。

追記(2011/01/10):OS 10.6.6でも64bit起動できました!自分で書き換えたboot-k64.efiが読み込まれなくなっているだけなので、このステップ4から行えば大丈夫です。

私は、MacBook (Aluminum Late 2008)を使っていますが、このMacBook実は、標準では64bit起動ができないようになっています。私が調べたところ、RAMメモリが4GB以上で、CPUがIntel Core 2 Duo のMacBook、つまり、Late 2006以降のMacBookは、潜在的(ハード的)には64bit起動できるはずなのです。しかし、CPUやメモリ容量が対応していない機種を考慮した安全のためなのか、MacBook Proとの差別化をはかるためなのかは分かりませんがMacBook全般で、64bit起動できないようになっているようです。

ちなみに、64bit起動が標準でサポートされているMacBook Proなどでは、6と4を同時に押しながら起動すると64bit起動でますが、MacBookではこの方法は使えません。

私は、OSをSnow Leopardにした際にnijitaroさんのHOKYPOKY.BLOGを参考に64bit化したのですが、OSを10.6.5にアップデートしたところ、再び64bit起動できなくなってしまい、調べたところ再び64bit起動ができるようになったので、ここにまとめさせてもらいました。

手順はnijitaroさんのHOKYPOKY.BLOGそのままで、次の通りです。
  1. /System/Library/CoreServices/boot.efiをリネームしてコピー。
  2. コピーしたboot.efiをHexEditorにて編集。
  3. /System/Library/CoreServices/に編集したファイルをコピー。
  4. アクセス権限を変更し、起動時に編集したboot-k64.efiを読みこむように指定。
  5. 64bit起動モードに設定し再起動。
では、それぞれ順に見て行きましょう。

1. /System/Library/CoreServices/boot.efiをリネームしてコピー。

アプリケーション>ユーティリティフォルダの中にあるターミナルを開き以下のコマンドを入力します($は入力しません)。
$ cp /System/Library/CoreServices/boot.efi ~/boot-k64.efi
これは/System/Library/CoreServices/boot.efiをユーザーフォルダにboot-k64.efiという名前にリネームしてコピーするという意味です。

2. コピーしたboot.efiをHexEditorにて編集。

HexEditorはここからダウンロードできます。ユーザーフォルダにあるboot-k64.efiをHexEditorで開きます。
図のように、編集を許可するにチェックを入れて、◯で囲った部分の合計3箇所変更します。
  1. 0x28708 0x0を0x4に変更
  2. 0x2870c 0x0を0x1に変更
  3. 0x28710 0x0を0x2に変更

HexEdit01

3. /System/Library/CoreServices/に編集したファイルをコピー。

ターミナルに戻って以下を入力します。
$ sudo cp boot-k64.efi /System/Library/CoreServices/

ここで
password:
と表示されるので、管理者のパスワード(大体の人は自分のパスワード)を入力します。

4. アクセス権限を変更し、起動時に編集したboot-k64.efiを読みこむように指定。

ターミナルに続けて
$ cd /System/Library/CoreServices/
$ sudo chown root:wheel boot-k64.efi
と入力します。これでアクセス権限が変更されました。さらに
$ sudo chflags uchg boot-k64.efi
$ sudo bless --folder /System/Library/CoreServices --file /System/Library/CoreServices/boot-k64.efi
と入力します。これで起動時にもともとのboot.efiではなく、新しく編集したboot-k64.efiを読み込むようになります。

5. 64bit起動モードに設定し再起動する。

A hat full of skyよりを32- or 64-bit Kernel Startup Mode Selector.appをダウンロードし、実行します。start in 64bit modeにチェックをいれて再起動すれば、64bitで起動できているはずです。

32- or 64-bit Kernel Startup Mode Selector.appを使わない方法もここに紹介されていました。
/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
をテキストエディタで開いて
<key>Kernel Flags</key> 
<string></string>
を探し、
<key>Kernel Flags</key> 
<string>arch=x86_64</string>
と書き換えることでも可能です。

64bitで起動できているかどうかを確認する方法は、二つあります。一つは、Appleメニュー>このMacについて>詳しい情報(ボタン)を選び、システムプロファイラを起動します。システムソフトウェアの概要の 64 ビットカーネルと拡張機能を確かめると、”はい”になっていることを確かめます。
もう一つは、アクティビティモニタを起動して、kernel_taskというプロセス名を確認すると種類の項目が”Intel(64ビット)”となっていることを確かめます。

参考になったでしょうか?


その他、参考にしたサイト
  1. http://netkas.org/?p=189









米国サンフランシスコで留学New!! 掲示板へ
ご利用下さい。

スポンサードリンク







医師が教える科学的英語勉強法講義










シャープ電子辞書パピルス発売日:2007年2月9日













続・Excel複数シートからStataへのデータ取り込みは死んだ~復活篇!

ポチッと応援をお願いします!人気ブログランキングへ

随分久しぶりのブログ更新になってしまいました。書きたいことは色々あるんですが、なかなか進みません。今回は、以前に書いた記事の続きです。Rという無料・高機能統計解析ソフトが必要ですが、エクセルのマクロを使わない分、前回の方法よりもスマートかもしれません。

その他関連記事:複数シートを持ったEXCELからSTATAへのデータのインポート


さて今回もテーマは、いかにして簡単かつスマートに、”複数シートのエクセルデータをStataデータに変換するか!?”です。

一応、WindowsとMac、エクセル、R、Stataのバージョンの違いも考慮して書きましたが、筆者はMacOSXとエクセル2004(日本語版)、Stata v.10を使っているのでその辺りは読み替えて下さい。

説明が分かりやすいように、合計8枚の複数シートからなるexceloneweek.xlsという名前が付いたエクセルファイルを扱うとします。(あまり内容は関係ありませんが、Summaryデータが入ったシート1枚と同じデータ形式でDay1からDay7のデータが入った7枚のシートを想定しています。)
手順の概要は次の通りです。
  1. Rの準備。
  2. エクセルファイルの前処理。
  3. Rで自動処理。
ほら、前回より全然簡単そうでしょ。では、それぞれ順に見て行きましょう。

1. Rの準備。

ここの記事を参考にRをインストールしてください。RにはCUI版(マウスを使わずに全てコマンド入力で動かすもの)もありますが、上記リンクを参考にインストールすれば、通常はGUI版(一般的なソフトウェアのようにマウス操作もできる)がインストールできるはずです。インストール後は、Rを起動して、Rのメニューから"パッケージとデータ>パッケージインストーラ"を起動し、前もって次のファイルをインストールしておきます。必要ファイルはオンラインに接続されたコンピュータからは、このパッケージインストーラを使えばとても簡単にインストールできます。

foreign
gregmisc
#gregmiscを利用するためにはさらに次のファイルが必要です。
gdata
gtools
#いちおう上記ファイル動きますが、エラーを回避のために下記もインストールしておきましょう。
gmodels
gplots
caTools
bitops

Windows版のRではlibrary(RODBC)を使うエクセルシートの読み込み方法もあるようですが、確認していません。また、Windowsでlibrary(gregmisc)を使う際には、予めActive Perlをインストールしておく必要があるようですが、このリンク先記事が参考になるでしょう。

2. エクセルファイルの前処理。

単純なエクセルファイルであればこのステップは省略できますが、ここである程度処理をしておくとStataでの操作が楽になります。次の最終ステップで使うRのread.xls()関数はかなり賢く、エクセルのセルが計算式で入力されていてもちゃんと値として読み込んでくれます。また、セルが結合されていたり、日本語が入力されていても(Wide characterというエラーは出ますが)ちゃんと動きました。しかし、安全にデータを移行させることを考えると、次の3つはチェックしておくべきでしょう(Stataで操作を考えると日本語も事前に消しておいた方が無難でしょう)。
  1. 最初の行が簡潔で分かりやすい英字と数字の変数名であること。

  2. Rはエクセルからデータを取り込む際に自動的にエクセルの最初の行を変数名と認識します。また、Stataで変数名を扱うときには、英数字の簡潔な変数名が良いのでここでしっかり処理をしておきます。
  3. 複数シート全てでデータの行数が揃っていること。

  4. 通常エクセルには一行に一人(一つ)の個体のデータがあり、列に例えば年齢や性別など様々なデータが入ったWide形式で作成されることが多いと思います。複数シートの全てで個体の数(つまり行数)が揃っているべきです。
  5. エクセルのメインのデータ入力セル以外にコメントなどが入っていないこと。

  6. エクセルで作成したメインのデータ入力欄の欄外のセルにコメントのつもりで入力してもRはデータとして読み込んでしまいます。Rに取り込む前にこのようなコメントは削除しておくべきでしょう。エクセルで一括してこれらのコメントなどを消す、簡単で有効な方法があります。シフトキーを押しながら、エクセルのシート名タブをクリックし、複数のシートをアクティブにすることで、一括(串刺し)で行や列の削除などが出来るようになります。これを覚えておけば、わざわざエクセルでマクロを組む必要はなくなるでしょう。


3. Rで自動処理。


いよいよ最後のステップです。GUI版のRではファイルメニューから新規文書を選ぶことでテキスト入力ウインドウが作成出来ます。この文書に、Rのコマンドを入力しておくと、いつでも繰り返し同じ操作ができます。下記の内容をこの新規文書にコピー&ペーストし、適宜名前を付けて、拡張子が.Rで終わるR Source Fileフォーマットで保存しておきましょう。
#複数シートのエクセルファイルから自動的にStata用のデータファイルを作成
#Step1でインストールがちゃんと出来ていれば、次のコマンドが実行できます。
#出来ていなければ、必要なファイル名がエラー表示されるので追加インストールしましょう。
library(gregmisc)
library(foreign)
#下記はMac用のPass例ですが、Winな人は”C:?data?Stata_data?”のように修正してください。
setwd("~/Documents/Stata_data")

#次がメインのプログラムです。
#ここではdbという仮のリスト変数にエクセルシートの1から8枚目を読み込む指示をしています。
#対象とするエクセルファイルを上記Passに置いておきます。
#取り込むシートの枚数やファイル名は適宜変更してください。
#例えばシートを2枚目から5枚目まで取り込むときは1:8の変わりに2:5とします。
#この処理は読み込むシートの枚数にもよりますが時間がかかります。
db <- lapply(1:8,function(i){read.xls("exceloneweek.xls", sheet=i)})

#上記リスト変数からデータフレーム(Rではスプレッドシート形式のデータをこう呼びます)
#に変更するには次の二つの方法があります。方法1がお勧めです。

#方法1
statadata <- db[[1]]
for(i in 2:8){statadata <- merge(statadata,db[[i]])}
#2010/06/11追記:複数シートに同一の変数名がいくつもあると上手くいかないことがありました。
#次のように,by="基準となる変数名"を指定すると上手くいきました。
#for(i in 2:15){statadata <- merge(statadata,db[[i]],by="ID")}
#方法2
#statadata <- data.frame(db)

#最後に上記データフレームをStatanewdataという名前でStataのdtaファイル形式で保存します。
#version = 10は、データファイル形式がStataのどのバージョンのものか明示しています。
write.dta(statadata,"Statanewdata.dta", version = 10)

#これで完了ですが、R上でデータを確認したり、データを保存したい場合には下記を実行します。
#save(statadata,file="Statanewdata.RData")
#statadata<- edit(statadata)

方法1は、複数シートに同じ列名(変数名)があるときに、データを自動的に統合します。
方法2は、単純にデータをつなぎ合わせるのでエラーが起きにくいですが、Stataで重複したデータを削除する作業が必要になります。しかし、Rは重複した変数名の場合は、元の変数名、元の変数名1、元の変数名2と連番を自動的に付けるのでStataの次のコマンドで一括削除できます。
上の例では、方法1がアクティブで方法2はコメントアウトされているので、方法2で行う場合には、コマンドの先頭の#を削除して、方法1の方を逆に#でコメントアウトしてください。
gen 新しい変数名=元の変数名
drop 元の変数名*
#もちろん新しい変数名、元の変数名は英数で表記されているはずです。

最後にStataでデータを開いてちゃんと期待通りに取り込めているか確認してみましょう。以上です。
何か不明な点や間違いがあれば是非コメントを下さい。










米国サンフランシスコで留学New!! 掲示板へ
ご利用下さい。

スポンサードリンク







医師が教える科学的英語勉強法講義










シャープ電子辞書パピルス発売日:2007年2月9日













スポンサードリンク

テレビ秋田放送の番組

「ゆうドキっ!」で

アナウンサーが番組内で

「これ、ほしいー。」

と言っていた

ボールペンが

爆発的な人気。


発売開始で

アッという間に完売。

リンク集
訪問者数
  • 今日:
  • 昨日:
  • 累計:

少しずつ充実させます!

livedoor プロフィール
All About スタイルストア[パソコンのある暮らしアンケート]
米国生活
-留学準備
1) VISAなど
-引っ越し
1) 郵便
2) 飛行機
-入国後の手続き
1) Social Security number (SSN)の申請
2) 日本領事館への入国の報告
-住居関連
1) 住む場所・駐車場の有無
2) 家具(机・椅子・ベットなど)
3) 固定電話
4) 携帯電話
5) テレビ
6) インターネット
7) トイレ(ウォッシュレットなど)
-移動手段
1) 公共交通機関
2) 車の購入と諸手続
3) 車の整備・修理サービス
4) 運転免許の取得
5) カーナビ
-お金
1) Tipの支払い方
2) 日本のクレジットカード
3) アメリカのクレジットカード
4) お金の支払い方 (小切手など)
5) 銀行口座の開設
6) 日本からの送金法
7) 税金(消費税など)
-保険・医療
1) 医療保険
2) 歯科保険・眼科保険
3) 薬
4) 自動車保険
5) 出産
6) 眼鏡・コンタクトレンズ
-教育
1) 保育園・幼稚園・小学校
2) サマースクール
3) 英語の勉強
スポンサードリンク
Blog内検索
Recent Comments
QRコード
QRコード
  • ライブドアブログ