08/10/08 19:57:14
あのぉ・・・
3.45%という文字列を0.0345という数字に変換する方法を教えてください。
不可能なのでしょうか?
967:914
08/10/08 21:15:02
>>966
>3.45%という文字列を0.0345という数字に変換する方法を教えてください。
こんな感じかな
> s="3.45%"
> n=as.double(substr(s, 1, nchar(s)-1))/100.0
> n
[1] 0.0345
968:132人目の素数さん
08/10/08 22:56:01
Σ(-ロ-)スマートにはいかないみたいですね。
ありがとうございました。
969:132人目の素数さん
08/10/08 23:12:02
質問者ではないですが、
おそらく、データを取り込むときに
xx.x% 書式を小数データに自動変換する
機能があるんじゃないだろうか。
どこのソフトにもあると思うので、Rにもあるのではないかな
だれか知らない?(R知らないもので)。
970:132人目の素数さん
08/10/09 04:02:25
>>964
ありがとうございます。
971:914コテ最後
08/10/09 18:57:44
>>968
>Σ(-ロ-)スマートにはいかないみたいですね。
以下は、最近話題ノ全国テスト、都道府県別の「数学A」の正答率(中学生)
第2カラムが、該当箇所(3.45%) ね。
D:\Somewhere>type in.txt
都道府県,正答率
北海道,68.6%
青森県,73.9%
岩手県,68.6%
(1) オレならば、awk でやっちまう。 under Cygwin, Linux
gawk -F, 'NR>1{ sub(/%/,"",$2); $2=$2/100.0; } { print $0; }' in.txt > in2.txt
(2) R でやるならば、あらかじめエディタで % だけを削除しておく。
その後、R の transform で、1/100 する。
> tmp1 <- read.csv("in2.txt")
> tmp2 <- transform(tmp1, 正答率2=as.numeric(正答率)/100)
> df <- tmp2[,c(1,3)]
> df
都道府県 正答率2
1 北海道 0.686
2 青森県 0.739
3 岩手県 0.686
972:132人目の素数さん
08/10/09 22:18:56
むむむむむ・・・・なんというか
ふ~結構面倒
973:132人目の素数さん
08/10/09 22:29:49
やっぱり学習用かな。。
974:132人目の素数さん
08/10/09 23:12:30
> rmpercent <- function(x){x<-as.character(x);as.numeric(substr(x,1,nchar(x)-1))/100}
> rmpercent("3.45%")
[1] 0.0345
> tmp1 <- read.csv("in.txt")
> tmp1
都道府県 正答率
1 北海道 68.6%
2 青森県 73.9%
3 岩手県 68.6%
> tmp1[,2] <- rmpercent(tmp1[,2])
> tmp1
都道府県 正答率
1 北海道 0.686
2 青森県 0.739
3 岩手県 0.686
975:132人目の素数さん
08/10/09 23:39:40
> tmp1[,2] <- rmpercent(tmp1[,2])
最初からこういうの用意されていないんだろうか?ありそうな気もするが
> rmpercent <- function(x){x<-as.character(x);as.numeric(substr(x,1,nchar(x)-1))/100}
%なら100で割ること決まって居るし、この行はなくても良いくらいだよね。
利用言語というよりアルゴリズム作り用なんだろうな、でも余分が多い。
でも、そうだから仕方ないんだけど
回答頂いた方への不満ではありませんので。もうしわけありませんでした。
ありがとうございます。
976:132人目の素数さん
08/10/10 01:02:16
詳しい人に質問。15年ほど前、大学2年の一般教養で
東大出版会の統計学入門を種本にした授業で単位を取った。
なぜか統計学入門は楽しく読めて、独学して一応
わかった「つもりになった」が、就職後、統計学と疎遠になったら
ほとんど全部忘れてしまった。
で、このたび仕事で必要になったんだが、予算上SASやSPSSには手が出せず、
Rの存在を知って早速インストールし、
関係サイトをあちこち見て回って勉強し直しているのだが、
もしかして、1991年刊の統計学入門で取り上げられている手法は、
WindowsXPがサクサク動くパソコンでRが使える時代には
もう古くさいものが少なからず含まれているのではないか?
977:132人目の素数さん
08/10/10 07:19:07
>>976
手で電卓たたいて計算する必要はないんじゃないか?という意味なら
その通りだが、それは1991年でも同じ。教科書は学習用。
統計学を学習するということにおいて統計学入門はまだいい本だと思うよ。
978:974
08/10/11 08:44:56
>>975
自分にとって使いやすい統計ソフトであるかどうかという以前に、オープンソースとは何かという視点を
持った方がよいと思うぞ。必要性を感じた人が必要な機能を付加する(付加できる)ということは、逆に
言えば、あなたが欲しい機能が実装されていないのは、誰も必要と考えていないから。あなたが必要なら
あなたがrmpercent()のように追加すればよい。
私自身は%を少数に変換する必要性を感じたことがない。表計算ソフトで%表示されいても実態は小数デー
タだし、CSV経由で読み込んだらnumericになっている。
979:132人目の素数さん
08/10/11 13:40:19
>>978
>私自身は%を少数に変換する必要性を感じたことがない。表計算ソフトで%表示されいても実態は小数デー
>タだし、CSV経由で読み込んだらnumericになっている。
質問は、一般的に統計ソフトなどはそういう機能を持ち合わせているので
Rにそういう機能はないの?という質問でしょう。
980:132人目の素数さん
08/10/11 19:29:58
禁句になっているような気もするが、
Rをメインで使っている人はデータ加工をどのようにしているの?
981:132人目の素数さん
08/10/11 20:04:23
>>980
それはRにデータを読み込んでからのデータ加工場面と、
外部ファイルにあるデータをRに読み込むための場面に分けて
考えた方がいいと思う。
同様に、テキストデータと数値データについても、同じように
場面を分けないと、データ加工についての議論はすれ違いになる
のではないかと思う。
982:132人目の素数さん
08/10/11 21:08:05
分析前のデータ加工(読み込み前)ってかなり重要ですよね?
あとさ、やっぱり結果の信頼性に欠けるのかなぁ・・・
R歴そんなに長くないのですが、例えばdecomposeの乗法モデル。
Helpでは、Y[t] = T[t] * S[t] + e[t] になってるのに、
実装上は、Y[t] = T[t] * S[t] * e[t] ですよ・・・
無い物は自分で造る、間違っているものは自分で直せの精神ですか?
う~ん・・・
983:132人目の素数さん
08/10/11 21:44:55
二年九十四日。
984:132人目の素数さん
08/10/12 20:34:25
Rとoctaveならどっちを習得したほうが良い???大学生です。
985:132人目の素数さん
08/10/12 21:44:55
二年九十五日。
986:132人目の素数さん
08/10/12 22:03:36
>>984
背景にあるSとMatlabの関係で
統計解析主体ならR、シミュレーション系が主であればoctave。
但し、実業界で考えるなら、Matlabは製造系で仕事がらみでの利用は結構
多いが、Sはあまり多くなく(ただし、企業内の研究など個々人の利用はある)
求人は多くない(Rとoctaveに限定すれば、企業内でのoctave利用はほとんど
ない)。
参考に。
>>982
取り込んでからの(数値データの)処理は強いが、前処理として
外部ファイルのあつかいは非常に弱い。その辺のニーズ異なると思われる。