10/27 知ることは富である

歴史的地区のジェントリフィケーション.ハイラインとか.知ることは富であるということだろう.その表現は決して単純な明るさを持つものではない.

www.cnn.co.jp

これは歴史ではないけれど.

logmi.jp

これを後で読もうと思う.

 

 

昨日まで悩んでいたことが解決した.きちんと進捗を生んだ,うれしい.あとはうまく変数調整したら推定回せそうだな…でも今日はできないし明日研究室停電だからおうちでやるしかないかな…

 

データフレームのうち一列を,文字列型で読み込む

やりたかったこと

・人々が段階ごとに出発時間と到着時間を持つ,というデータをcsvで読み込み,「次の段階が存在するならば,次の段階での出発時間を新しい列に保存する」という操作

・(段階j+1への出発時間)-(段階jへの到着時間)をすることで,その段階での滞在時間を求めたかった.

 

わたしの書いたコード.

> data4 <- read.csv("data4.csv")
> data4$出発時刻 <- as.character(data4$出発時刻)
> 
> #str(data4)
> 
> iID <- unique(data4[,2]) > > Data <- sapply(1:length(data4[,2]), function(w){ + # iIDがいまの値になっているものを取る + iIDsamedata4 <- data4[data4[,2] == iID[w],,drop=FALSE] + j <- iIDsamedata4[,3] + J <- 1:length(j) + nexttime <- matrix(0, nrow=length(j), ncol=1) + for(i in J){ + if(i < length(j)){ + nexttime[i] <- as.character(iIDsamedata4[i+1, 10]) + } + } + nexttime}) > > unlistData <- unlist(Data) > write.csv(unlistData, "-----.csv") > > newData <- matrix(nrow=372, ncol=1) > for(i in 1:length(Data)){ + newData[i] <- unlistData[i] + }
 
 

出発時刻は15:00とか14:45とかの形式でcsvに格納されている.最初はコードに

> data4$出発時刻 <- as.character(data4$出発時刻)

を入れていなかった.そうするとなぜかnewdataの中身として13とか29とか0とかみたいな数値が出る.たぶん型が違う認識になっているのだろうと思い,

> str(hinandata4)

を入れて,出発時刻の項を見てみると,

$ 出発時刻 : Factor w/ 49 levels "14:45","14:46",..: 13 17 29 37 41 5 29 5 29 34 ...

となっている.要するに文字列つまりcharacter型じゃなくて,Factor型になっていて,そのlevel(順序)で記述されてしまっているということらしい.

(順序付き因子ベクトルについては

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/16.html

それで,以下を参考に

> data4$出発時刻 <- as.character(data4$出発時刻)

を入れた.d.hatena.ne.jp

この検索ワードがわかるまでにだいぶ苦労した…プログラミングの難しさの一つは,「わからないところはわかるんだけどそれを解決するには何という名前のものを使えばいいのかわからない」となってしまうところにあると思う…

csv全部を文字列で読み込むにはread.csvのところで引数stringsAsFactors=FALSEにすればいいのだけど,一個だけ変えたいときのやり方がわからなくて苦労した.結局列丸ごとを指定して,as.charactorで変換して入れ直せばいいということである.