【R言語】統計解析フリーソフトR 第4章【GNU R】at MATH
【R言語】統計解析フリーソフトR 第4章【GNU R】 - 暇つぶし2ch697:695
12/12/25 21:25:57.68
>>696
それなら、expand.grid()を再帰的に使えば良い。
入れ子にするのは面倒なので二項演算子を定義すると、
> "%+%" <- function(x, y) apply(expand.grid(x, y), 1, paste, collapse = "")
> a[[1]] %+% a[[2]] %+% a[[3]]
[1] "147" "247" "157" "257" "167" "267" "148" "248" "158" "258" "168" "268"

あとはRecall()を使って、これを一般化すれば良い。
> f696 <- function(x) { f <- function(i){ if(i > 0) return(Recall(i - 1) %+% x[[i]])
+ else return("")}
+ return(f(length(x)))
+ }
> f696(a)
[1] "147" "247" "157" "257" "167" "267" "148" "248" "158" "258" "168" "268"

次に質問するときは、最初から>>696のように書いた方が良いよ。
または、
> forを3重にすればできるのですが、
この具体的なコードを書くとか。抽象的に説明すると、解釈の余地に幅が生まれる。

698:132人目の素数さん
12/12/25 21:29:26.76
>>697 親切にありがとうございます。精進します!

699:695
12/12/25 21:31:46.70
あぁ、すまない。
n桁の整数は連結させるのではなく、
桁をばらばらにして行列にしたかったのか。
それなら話はもっと簡単だ。
pasteの処理をやめれば良い

700:132人目の素数さん
12/12/25 22:31:04.88
expand.grid(a)
(function() as.matrix((expand.grid(a)->x)[do.call(order, x),]))()

701:132人目の素数さん
12/12/26 09:37:32.22
>>700
あぁ、しまった。expand.grid()は3次元次元でも使えたのか。

>>700さんの別解。rev()を2重に使う。
as.matrix(rev(expand.grid(rev(a))))

702:令嬢
12/12/26 21:17:40.81
          __ノ)-'´ ̄ ̄`ー- 、_
        , '´  _. -‐'''"二ニニ=-`ヽ、
      /   /:::::; -‐''"        `ーノ
     /   /:::::/           \
     /    /::::::/          | | |  |
     |   |:::::/ /     |  | | | |  |
      |   |::/ / / |  | ||  | | ,ハ .| ,ハ|
      |   |/ / / /| ,ハノ| /|ノレ,ニ|ル' 
     |   |  | / / レ',二、レ′ ,ィイ|゙/   
.     |   \ ∠イ  ,イイ|    ,`-' |      
     |     l^,人|  ` `-'     ゝ  |        このスレには馬と鹿と豚さんしかいないのね。
      |      ` -'\       ー'  人            
    |        /(l     __/  ヽ、          
     |       (:::::`‐-、__  |::::`、     ヒニニヽ、         
    |      / `‐-、::::::::::`‐-、::::\   /,ニニ、\            
   |      |::::::::::::::::::|` -、:::::::,ヘ ̄|'、  ヒニ二、 \
.   |      /::::::::::::::::::|::::::::\/:::O`、::\   | '、   \
   |      /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ  ヽ、  |
  |      |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、  /:\__/‐、
  |      |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
   |     /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
   |    |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
    |   /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/

703:132人目の素数さん
12/12/26 23:44:03.23
>>701
revの二重使いは柔軟な思考ですね。参考になりました。

704:狢 ◆yEy4lYsULH68
12/12/27 09:03:34.27


>増田哲也こそ笑い者。
>俺が逮捕されて懲戒免職させる日本こそ沈めって、一発逆転をねらっている愚民そのもの。
>

705:132人目の素数さん
12/12/29 23:41:13.98
データフレームにあるQ01, Q02, Q03, Q04...というような連番の変数って、分析の際にまとめて指定することはできないのでしょうか。
SASでQ01-Q50などとやるようなことをしたいのですが、方法がわかりません。ご存知の方、お教えください。
50項目で主成分分析をしようなどという場合を考えると、気が遠くなります。

706:132人目の素数さん
12/12/30 07:20:47.80
URLリンク(knowledge-bank.org)

707:132人目の素数さん
12/12/30 08:39:23.19
>>705
outcome ~ .
って指定するとすべての変数が入る

708:132人目の素数さん
12/12/30 11:33:43.75
>>705
できるけど、"Q01-Q50"のような記法ではできない。
>>707が助言するようにまるごと入れることもできるし、
paste()とas.formula()をつかって長いformulaを作成することもできる。
formulaのヘルプにある例
> xnam <- paste0("x", 1:25)
> (fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))))
y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 +
x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21 +
x22 + x23 + x24 + x25

709:132人目の素数さん
12/12/30 12:25:38.54
>>707,708
ありがとうございます。
これで、エクセルのオートフィルで変数リスト作成してRのコンソールに貼り付ける作業から解放されます。

710:132人目の素数さん
12/12/30 14:53:50.70


711:132人目の素数さん
12/12/30 14:55:00.08
私はR言語で学習をしている初心者です。
その中で、irisデータを用いてコマンドの学習をしているのですがエラーが出てしまい先に進めなくなってしまいました。
以下にコマンドを載せますものが私の用いたものです。

library(rpart)
library(adabag)
data <- iris
ndata <- nrow(data)
#乱数指定
set.seed(101)
#学習データ(data.learn)とテストデータ(data.test)に分ける
ridx <- sample(ndata, ndata * 0.5)
data.learn <- data[ridx,]
data.test <- data[-ridx,]

#3-fold crossvalidation、弱識別器の数を10とし、学習データに対しboostingを行ったものをdata.adaCvに代入
data.adaCv <- boosting.cv(Species ~ .,data = data.learn,v=3, mfinal = 10)

#テストデータに学習データを照らし合わせる。
resultPredict <- predict(data.adaCv, newdata = data.test, type="class")

というコマンドですが「predict」を行った際に

以下にエラー UseMethod("predict") :
'predict' をクラス "character" のオブジェクトに適用できるようなメソッドがありません

というエラーが出てしまい、ネットや参考文献を見てもわからず投稿させていただきました。
もしこのエラーの解決方法がお分かりのかたがいらっしゃいましたらよろしくお願いします。

712:695
12/12/30 20:21:19.02
>>711
>以下にエラー UseMethod("predict") :
>'predict' をクラス "character" のオブジェクトに適用できるようなメソッドがありません
分かるも何も、書いてあるままだよ。
> class(data.adaCv)
[1] "list"
boosting.cv()は、predictメソッドをもつクラスを吐かず、単純にlistクラスを吐く。
それだけの話。

713:132人目の素数さん
12/12/30 20:22:36.64
>>712
名前欄にゴミが入ったorz

714:132人目の素数さん
12/12/30 23:08:32.14
>>712さん>>711です。回答ありがとうございます。
実行してみたところおっしゃたように"list"と出力されました。
ということはboosting.cvで得られた変数(data.adaCv)を用いての
predictはできないということでしょうか?
また、もしできるのであればそのコマンドと使用例を教えていただきたいです。
宜しくお願いします。

715:132人目の素数さん
12/12/31 15:27:18.84
          __ノ)-'´ ̄ ̄`ー- 、_
        , '´  _. -‐'''"二ニニ=-`ヽ、
      /   /:::::; -‐''"        `ーノ
     /   /:::::/           \
     /    /::::::/          | | |  |
     |   |:::::/ /     |  | | | |  |
      |   |::/ / / |  | ||  | | ,ハ .| ,ハ|
      |   |/ / / /| ,ハノ| /|ノレ,ニ|ル' 
     |   |  | / / レ',二、レ′ ,ィイ|゙/   
.     |   \ ∠イ  ,イイ|    ,`-' |      
     |     l^,人|  ` `-'     ゝ  |        このスレには馬と鹿と豚さんしかいないのね。
      |      ` -'\       ー'  人            
    |        /(l     __/  ヽ、          
     |       (:::::`‐-、__  |::::`、     ヒニニヽ、         
    |      / `‐-、::::::::::`‐-、::::\   /,ニニ、\            
   |      |::::::::::::::::::|` -、:::::::,ヘ ̄|'、  ヒニ二、 \
.   |      /::::::::::::::::::|::::::::\/:::O`、::\   | '、   \
   |      /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ  ヽ、  |
  |      |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、  /:\__/‐、
  |      |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
   |     /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
   |    |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
    |   /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/

716:132人目の素数さん
13/01/02 11:10:09.30
ビギニングス to Rって読んだけど
プログラミング言語の解説というかRをアプリケーションとしてみた解説って感じで
言語的なことはほとんど勉強になりませんでしたね。
やっぱ俺はS言語の本読むべきでしたね。

717:132人目の素数さん
13/01/04 09:40:38.25
>>716
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)

718:132人目の素数さん
13/01/04 10:07:16.37
>>714
Rjpwikiの方に書いたからもういいと思うのだけど、念のため。
boosting.cvの中身は見た?
bootsting()とpredict.boosting()を中で使っているよね。
> boosting.cv
function (formula, data, v = 10, boos = TRUE, mfinal = 100, coeflearn = "Breiman",
control)
{
vardep <- data[, as.character(formula[[2]])]
n <- length(vardep)
if (v > n)
stop(" v should be in [2, n]")
if (v < 2)
stop(" v should be in [2, n]")
predclass <- rep("O", n)
for (i in 1:v) {
test <- v * (0:floor(n/v)) + i
test <- test[test < n + 1]
fit <- boosting(formula, data[-test, ], boos, mfinal,
coeflearn, control = control)
fit.predict <- predict.boosting(fit, data[test, ])
predclass[test] <- fit.predict$class
cat("i: ", c(i, date()), "\n")
}
tabla <- table(predclass, vardep, dnn = c("Predicted Class",
"Observed Class"))
error <- 1 - sum(predclass == vardep)/n
output <- list(class = predclass, confusion = tabla, error = error)
}
<environment: namespace:adabag>
このfit.predictが欲しいなら、自分でbooting.cv()をコピーして編集すればよい。
そうじゃないなら、何をしたいのか、もっとはっきり伝えること。

719:132人目の素数さん
13/01/05 03:55:18.11
>>716
Rノウハウ本の購入層はやりたい解析があってそこまでたどり着ければいい
って人が大多数なんじゃないかな、んでそれにあわせた内容になってると
+αを求める人は多くは無いと思う

720:132人目の素数さん
13/01/05 12:25:03.16
<スプライン補間:yからxを予測する方法>

質問です。

x<-c(1,2,3,4,5,6)
y<-c(1,4,9,7,6,8)
というデータがあったとして、
sp<-smooth.spline(x,y)
predict(sp,x=2.5)
とすると、xが2.5のときのyの値は下記のように予測できます。
$x
[1] 2.5
$y
[1] 6.923206

逆にyからxを求める方法がお分かりの方、いらっしゃいましたらお教えください。

721:132人目の素数さん
13/01/05 14:02:30.39
>>720
stats:::predict.smooth.spline.fitにざっと目を通した限りは、
できなさそうだけど。
GAMFIT (URLリンク(lib.stat.cmu.edu))の中までは読んでいない。

sp$fitの中身を使って数学的に解くか、xを細かい間隔でpredict()に与えて、
与えられたyに最も近いものを選ぶしかなさそうだが、
ちゃんとした識者に答えてもらった方がよいかも。

後者なら、
predict.y <- function(y){
x0 <- c(1, 2, 3, 4, 5, 6)
y0 <- c(1, 4, 9, 7, 6, 8)
sp <- smooth.spline(x0, y0)
i <- seq(from = min(x0), to = max(x0), by = 0.0001)
Y <- predict(sp, i)
j <- which.min((Y$y - y)^2)
return(list(y = y, x = i[j], fitted = Y$y[j]))
}
こんな感じでよいのでは。
> predict.y(2.345)
$y
[1] 2.345

$x
[1] 1.4487

$fitted
[1] 2.345004

722:132人目の素数さん
13/01/05 14:47:31.66
          __ノ)-'´ ̄ ̄`ー- 、_
        , '´  _. -‐'''"二ニニ=-`ヽ、
      /   /:::::; -‐''"        `ーノ
     /   /:::::/           \
     /    /::::::/          | | |  |
     |   |:::::/ /     |  | | | |  |
      |   |::/ / / |  | ||  | | ,ハ .| ,ハ|
      |   |/ / / /| ,ハノ| /|ノレ,ニ|ル' 
     |   |  | / / レ',二、レ′ ,ィイ|゙/   私は只の数ヲタなんかとは付き合わないわ。
.     |   \ ∠イ  ,イイ|    ,`-' |      頭が良くて数学が出来てかっこいい人。それが必要条件よ。
     |     l^,人|  ` `-'     ゝ  |        さらに Ann.of Math に論文書けば十分条件にもなるわよ。
      |      ` -'\       ー'  人          一番嫌いなのは論文数を増やすためにくだらない論文を書いて
    |        /(l     __/  ヽ、           良い論文の出版を遅らせるお馬鹿な人。
     |       (:::::`‐-、__  |::::`、     ヒニニヽ、         あなたの論文が Ann of Math に accept される確率は?
    |      / `‐-、::::::::::`‐-、::::\   /,ニニ、\            それとも最近は Inv. Math. の方が上かしら?
   |      |::::::::::::::::::|` -、:::::::,ヘ ̄|'、  ヒニ二、 \
.   |      /::::::::::::::::::|::::::::\/:::O`、::\   | '、   \
   |      /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ  ヽ、  |
  |      |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、  /:\__/‐、
  |      |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
   |     /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
   |    |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
    |   /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/

723:132人目の素数さん
13/01/05 16:46:53.71
>721
ありがとうございました。参考になりました。

724:132人目の素数さん
13/01/05 20:24:09.52
          __ノ)-'´ ̄ ̄`ー- 、_
        , '´  _. -‐'''"二ニニ=-`ヽ、
      /   /:::::; -‐''"        `ーノ
     /   /:::::/           \
     /    /::::::/          | | |  |
     |   |:::::/ /     |  | | | |  |
      |   |::/ / / |  | ||  | | ,ハ .| ,ハ|
      |   |/ / / /| ,ハノ| /|ノレ,ニ|ル' 
     |   |  | / / レ',二、レ′ ,ィイ|゙/   
.     |   \ ∠イ  ,イイ|    ,`-' |      
     |     l^,人|  ` `-'     ゝ  |        このスレには馬と鹿と豚さんしかいないのね。
      |      ` -'\       ー'  人            
    |        /(l     __/  ヽ、          
     |       (:::::`‐-、__  |::::`、     ヒニニヽ、         
    |      / `‐-、::::::::::`‐-、::::\   /,ニニ、\            
   |      |::::::::::::::::::|` -、:::::::,ヘ ̄|'、  ヒニ二、 \
.   |      /::::::::::::::::::|::::::::\/:::O`、::\   | '、   \
   |      /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ  ヽ、  |
  |      |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、  /:\__/‐、
  |      |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
   |     /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
   |    |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
    |   /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/

725:132人目の素数さん
13/01/07 16:01:51.28
>>716
いまさらだけどビギニングス ガイド イン Rのミススペルな。

726:132人目の素数さん
13/01/07 18:48:16.16
>>725
URLリンク(www.amazon.com)
これのことか?
でも「ビギニングス ガイド イン R」じゃないぞ。

727:132人目の素数さん
13/01/09 09:49:00.54
またミスすぺるブチこみました。
正確には
ビギニングス ガイド イン R
でした。

728:132人目の素数さん
13/01/11 23:37:12.84
以下のようなデータフレームを仮定
コード 日付1 日付2 日付3 データ1 データ2 データ3
0001 201201 201103 201003 52 33 34
0002 201203 NA NA 22 NA 3
0003 201103 201001 200901 32 2 73
0004 201003 200905 200804 98 87 88
0005 NA NA NA NA NA NA
0006 201105 201102 201009 NA 32 55

日付XとデータXが対応
日付1>日付2>日付3となっている

この時、日付が201101よりも大きい日付に対応するNAでないデータを取得したい
即ち望まれる出力は以下の通り

コード 日付 データ
0001 201201 52
0002 201203 22
0003 201103 32
0004 NA NA
0005 NA NA
0006 201102 32

このように取得したい場合どのような操作をすればよいでしょうか?
実際には数千のコードがあるのでループで一行ずつ回すのはあまり現実的ではありません。

よろしくお願いします

729:132人目の素数さん
13/01/12 03:32:35.10
>>728
宿題じゃないよね?
> a <- scan(text="0001 201201 201103 201003 52 33 34
+ 0002 201203 NA NA 22 NA 3
+ 0003 201103 201001 200901 32 2 73
+ 0004 201003 200905 200804 98 87 88
+ 0005 NA NA NA NA NA NA
+ 0006 201105 201102 201009 NA 32 55")
Read 42 items
> b <- data.frame(t(matrix(a, ncol = 6)))
> names(b) <- c("コード", paste0("日付", 1:3), paste0("データ", 1:3))
で、ヒントは次の通り。
> m <- ((b[, 2:4] > 201101) & (b[, 2:4] & b[, 5:7])) * b[, 2:4]
> m[(m == 0)] <- NA
> i <- apply(m, 1, which.max)
> unlist(sapply(1:length(i), function(j){ifelse(length(i[j][[1]]) == 0, NA, (b[j, 5:7])[i[j][[1]]])}))
[1] 52 22 32 NA NA 32
> unlist(sapply(1:length(i), function(j){ifelse(length(i[j][[1]]) == 0, NA, (b[j, 2:4])[i[j][[1]]])}))
[1] 201201 201203 201103 NA NA 201102

730:132人目の素数さん
13/01/13 13:37:10.99
正規分布の乱数を作って、確率密度(面積)の合計が1になるのを
確認したいのですが、↓だと何故か2になってしまいます。
どこがダメなんだしょう?

x = rnorm(500)
hist(x, prob=T)
sum(hist(x, prob=T)$density)

731:132人目の素数さん
13/01/13 13:52:12.00
>>730
乱数の分散を変えてみると、理解出来るのでは?
> set.seed(1234); sum(hist(rnorm(500, sd = 2), prob = TRUE)$density)
[1] 1
> set.seed(1234); sum(hist(rnorm(500, sd = 5), prob = TRUE)$density)
[1] 0.2
> set.seed(1234); sum(hist(rnorm(500, sd = .1), prob = TRUE)$density)
[1] 20

732:132人目の素数さん
13/01/13 15:13:55.16
>>731
わからないよ (´・ω・`)

sum(hist(x, prob=T)$density)

sum(hist(x, prob=T)$count/500)
は同じになると思ったんだけど、違うってことですかね??

733:132人目の素数さん
13/01/14 13:24:07.24
>>732
730 の最後の式では、確率密度の積分 ∫f(x) dx = 1 の dx の部分が
抜けてしまっています。
hist を用いる場合、dx に相当する値は
diff(hist(x, prob=T)$breaks) で求めることができます。

x <- rnorm(500)
h <- hist(x, prob=T)
sum(h$density * diff(h$breaks))

734:132人目の素数さん
13/01/14 22:54:04.42
>>733 理解できました!
ありがとうございます!

735:132人目の素数さん
13/01/16 12:15:17.92
質問失礼します

言語を英語にすると、立ち上げた際のメッセージなどはきちんと英語になるのですが、
cor.test()などの関数を実行すると出力が日本語メッセージでかえってきます
日本語のwinOSでRの返答を完全に英語にする方法をどなたかご存知ないでしょうか?

ちなみに↓サイトの起動アイコンカスタマイズの方法で英語化しています
URLリンク(minato.sip21c.org)

736:132人目の素数さん
13/01/16 12:41:27.37
>>735
妙な挙動ですね。WindowsだとLANG=Cがどこかで強制的に書き換えられるのでしょうか。
Sys.getenv()で、メッセージが日本語になる前後でLANGやLC_ALLを確認してみてはどうでしょうか。
LANGを確認するには、Sys.getenv("LANG")とすればOKです。

なお、メッセージの言語を指定する環境変数はLC_MESSAGESです。

環境変数によるローケルの管理を知っておいても損はないと思います。
例えば、URLリンク(www.itmedia.co.jp)
の「環境変数の階層」とかに目を通すとか。

737:736
13/01/16 12:54:26.20
追記。
URLリンク(www.itmedia.co.jp)
を読んで思い出したが、昔、起動アイコンに、LANG=Cじゃなくて、language=enをつけていた。

「R language=en」でググるとCRANのR for Windows FAQがヒット。
URLリンク(cran.r-project.org)

... if you want to ensure that menus and messages are in (American) English, LANGUAGE=en.
とか、
You can ensure that R uses English messages by appending LANGUAGE=en to the shortcut
you use to start R, or setting it in the Rconsole file.
って書いてあるよ。FAQに。

738:132人目の素数さん
13/01/16 23:32:51.99
>>729
遅くなりましたがありがとうございました。
無事動作しました。

739:728
13/01/16 23:41:01.80
すいません。
再び質問です。

横型ではなく縦型の場合はいかがでしょうか?

以下のようなデータフレームを仮定します
コード 日付 データ
0001 20120101 332
0001 20120111 542
0002 20120201 5554
0002 20120301 52334
0002 20120511 15234
0003 20121101 35234
0003 20121201 NA
0004 20120501 75234
0005 20120601 NA

各コードに対してデータがNAでない日付が最大の値を取得したいのです。
NAしかない場合にはその値を取得します。
上記の場合以下の値が期待されます。

コード 日付 データ
0001 20120111 542
0002 20120511 15234
0003 20121101 35234
0004 20120501 75234
0005 20120601 NA

ヒントだけでも結構ですのでよろしくお願いいたします。

740:132人目の素数さん
13/01/17 00:37:07.40
mac版のRでの質問、失礼します。
ローカルに保存したCSVファイルではなく、直接ダウンロード、読込みをするファイルの文字化けを解消したいのですが、
エンコードを変える記述では上手くいきません。
ご教示いただけないでしょうか?

例)

url.data <- "URLリンク(maxis.muam.jp)
eMAXIS <- read.table(url.data, sep=",", stringsAsFactor = FALSE)

741:132人目の素数さん
13/01/17 14:18:27.23
>>740
fileEncoding = "SJIS"
オプションとかではダメってこと?

742:132人目の素数さん
13/01/17 14:25:14.37
>>739
plyrにあるddply()でIDで分割してwhich.max()で日付が最大のところのindexをとって、その場所の数字を取ればいいかな。

NAの処理を条件分岐を使わないでやるなら、ID日付でソートしたうえで、ddply()の中でzooのna.locf()を使えばいいか?

結構重くなってしまうかも。

743:132人目の素数さん
13/01/17 19:30:55.74
          __ノ)-'´ ̄ ̄`ー- 、_
        , '´  _. -‐'''"二ニニ=-`ヽ、
      /   /:::::; -‐''"        `ーノ
     /   /:::::/           \
     /    /::::::/          | | |  |
     |   |:::::/ /     |  | | | |  |
      |   |::/ / / |  | ||  | | ,ハ .| ,ハ|
      |   |/ / / /| ,ハノ| /|ノレ,ニ|ル' 
     |   |  | / / レ',二、レ′ ,ィイ|゙/   
.     |   \ ∠イ  ,イイ|    ,`-' |      
     |     l^,人|  ` `-'     ゝ  |        このスレは馬と鹿と豚さんばかりね。
      |      ` -'\       ー'  人            
    |        /(l     __/  ヽ、          
     |       (:::::`‐-、__  |::::`、     ヒニニヽ、         
    |      / `‐-、::::::::::`‐-、::::\   /,ニニ、\            
   |      |::::::::::::::::::|` -、:::::::,ヘ ̄|'、  ヒニ二、 \
.   |      /::::::::::::::::::|::::::::\/:::O`、::\   | '、   \
   |      /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ  ヽ、  |
  |      |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、  /:\__/‐、
  |      |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
   |     /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
   |    |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
    |   /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/

744:132人目の素数さん
13/01/17 22:40:29.47
>>742
ありがとうございます。
ddplyで無事いけました。
20万行程度のデータフレームですが、数秒で完了するので問題ありませんでした。

745:132人目の素数さん
13/01/18 01:06:24.60
>>741
すみません。勘違いしてました。
オプションでいけました。
ご指摘ありがとうございます。

746:132人目の素数さん
13/01/26 23:13:16.48
RMySQLがインストールできず困っています。

> install.packages("RMySQL", type="source")
Installing package(s) into ‘D:/program_files/R-2.15.2/library’
(as ‘lib’ is unspecified)
URL 'URLリンク(cran.rstudio.com)' を試しています
Content type 'application/x-gzip' length 165363 bytes (161 Kb)
開かれた URL
downloaded 161 Kb

* installing *source* package 'RMySQL' ...
** パッケージ 'RMySQL' の解凍およびMD5サムの検証に成功しました
checking for $MYSQL_HOME... D:program_filesMySQL
MYSQL_HOME is set but does not point to a directory
ERROR: configuration failed for package 'RMySQL'
* removing 'D:/program_files/R-2.15.2/library/RMySQL'
Warning in install.packages :
命令 'D:/PROGRA~1/R-215~1.2/bin/x64/R CMD INSTALL -l "D:/program_files/R-2.15.2/library" C:\Users\<<User>>\AppData\Local\Temp\RtmpmAoBu3/downloaded_packages/RMySQL_0.9-3.tar.gz' の実行は状態 1 を持ちました
Warning in install.packages :
installation of package ‘RMySQL’ had non-zero exit status

The downloaded source packages are in
‘C:\Users\<<User>>\AppData\Local\Temp\RtmpmAoBu3\downloaded_packages’

が出て、MYSQL_HOMEの値がダメなんだと思いますが、mysql自体にはパスが通るので合ってるはずです。どこが悪いんでしょうか?

747:132人目の素数さん
13/01/27 08:48:14.43
>>746
これってソースしかないの?

748:746
13/01/27 23:38:33.32
ごめんなさい。自己解決しました
やっぱりMYSQL_HOMEの値がおかしかったようです。

749:132人目の素数さん
13/02/01 10:37:40.43
win版のRについて質問があります
Rjpwikiの時間の数値変換を、使っているデータの時間フォーマットにあわせてアレンジしてるんですが
date2num <- function(x, ...) {
.day <- as.numeric(substr(x,10,11))
.hour <- as.numeric(substr(x,13,14))
.minute <- as.numeric(substr(x,16,17))
.second <- as.numeric(substr(x,19,20))
.year <- as.numeric(substr(x,2,5))
.mon <- as.numeric(substr(x,7,8))
a <- .day - 1
b <- .year - 1970
c <- 1
if(.mon==2) c <- 31
else if(.mon==3) c <- 59
else if(.mon==4) c <- 90
else if(.mon==5) c <- 120
else if(.mon==6) c <- 151
else if(.mon==7) c <- 181
else if(.mon==8) c <- 212
else if(.mon==9) c <- 243
else if(.mon==10) c <- 273
else if(.mon==11) c <- 304
else if(.mon==12) c <- 334
else if(.mon==1) c <-0
else m <-1

750:132人目の素数さん
13/02/01 10:40:10.94
file<-sprintf("%03d",.mon)
cat(file) # 画面に出力
cat("\n") # 改行コード
file<-sprintf("%03d",a)
cat(file) # 画面に出力
cat("\n") # 改行コード
file<-sprintf("%03d",c)
cat(file) # 画面に出力
cat("\n") # 改行コード
c<-c+a
file<-sprintf("%03d",c)
cat(file) # 画面に出力
cat("\n") # 改行コード
return(b*31556926+c*86400+a*86400+.hour*3600+.minute*60+.second)
}
これに" 2012/11/30 16:50:00"のような時刻データを
date,sum
2012/12/05 20:30:00,17012
2012/12/05 20:30:00,16512
2012/12/05 19:53:00,16512
2012/12/05 19:53:00,16012
以上のようなデータフレームで入力しているのですが
月を調べているif文が1度しか動きません
if文が問題なのだと思っているのですがどう直せばよいものでしょうか

751:132人目の素数さん
13/02/01 11:19:52.70
>>750
よく分からない。date2numの引数はxだけなのに、なんで、dateとsumのデータフレームを入れるの?
それに、月を7文字目と8文字目ってしているけど、6文字目と7文字目じゃないの?

> date2num("2012/12/05 20:30:00")
以下にエラー if (.mon == 2) c <- 31 else if (.mon == 3) c <- 59 else if (.mon == (from #11) :
TRUE/FALSE が必要なところが欠損値です
[snip]

再現できるように質問しようよ。

もっと言えば、
> as.numeric(as.POSIXlt("2012/12/05 20:30:00"))
[1] 1354707000
とかを使うのは嫌いなの?

752:132人目の素数さん
13/02/01 12:21:01.54
すみません 単純に使い方が分からず力技でどうにかやってみた感じだったのでこういう形になっていました
自分の力が及ばないせいでデータファイルを作るとき時刻データの前にどうしても消えない半角スペースがあって
それで6番目と7番目ではなく7番目8番目になっていますorz

それと
> as.numeric(as.POSIXlt("2012/12/05 20:30:00"))
[1] 1354707000
これをみて目からうろこでした、自分のやってたことの馬鹿さ加減にあきれました
御助言ありがとうございました

753:132人目の素数さん
13/02/01 13:26:36.91
>>752
>時刻データの前にどうしても消えない半角スペース
関数を自作するレベルなのになぜw

例えば、
> (a <- c(" 2013-02-01 13:21:17", "2013-01-01 09:21:17", " 2013-03-01 11:21:17"))
[1] " 2013-02-01 13:21:17" "2013-01-01 09:21:17" " 2013-03-01 11:21:17"
こんな感じで、時刻前に空白があったりなかったりするなら、

> library(stringr)
> str_trim(a)
[1] "2013-02-01 13:21:17" "2013-01-01 09:21:17" "2013-03-01 11:21:17"
これでよいのでは?
オプションなしでは、前後の空白を取り除くから、前だけならそのように指定する。

754:132人目の素数さん
13/02/01 13:49:46.73
なるほど、Rの方でtrimするって手もありましたね
なにからなにまでありがとうございます

755:132人目の素数さん
13/02/01 14:11:14.62
>>754
>Rの方でtrimするって手もありましたね

別にRの外でも、どこででも空白を削除すれば良いと思う。
例えば下記のようなcsvがあったら、
$ cat tmp.csv
"A","B","C"
"BE DAC","Jan",0.35
"AC BDE","Feb",0.34
" EBACD","Mar",0.66
" DABEC","Apr",0.44
"BEA CD","May",0.84
"CDA EB","Jun",0.3
"EDCAB ","Jul",0.59
"CBEA D","Aug",0.53
"ECDA B","Sep",0.44
"ABDCE ","Oct",0.33
$ sed -e 's/¥" ¥([^ ,]*¥)/¥"¥1/g' tmp.csv
"A","B","C"
"BE DAC","Jan",0.35
"AC BDE","Feb",0.34
"EBACD","Mar",0.66
"DABEC","Apr",0.44
"BEA CD","May",0.84
"CDA EB","Jun",0.3
"EDCAB ","Jul",0.59
"CBEA D","Aug",0.53
"ECDA B","Sep",0.44
"ABDCE ","Oct",0.33
とすると3,4行目にあった文字列前の空白を消せる。

756:132人目の素数さん
13/02/02 10:13:07.27
Win版Rで質問失礼します
URLリンク(cse.naro.affrc.go.jp)
上記サイトの複数の列に対してソートを行う場合は関数を使用して
同じように
a b c
11 1 2 11
12 1 1 12
9 2 4 9
10 2 3 10
7 3 6 7
8 3 5 8
5 5 8 5
6 5 7 6
4 7 9 4
1 9 12 1
2 9 11 2
3 9 10 3
というデータフレームをaを昇順に整列しaで同じものがあった場合はcの小さいものを上にするようにしたいのですが
In Ops.factor(mmm, each) : < 因子に対しては無意味です というエラーが出てうまくいきません
どこが問題でしょうか?

757:132人目の素数さん
13/02/02 10:18:28.45
データフレーム訂正します
a b c
1 2 11
1 1 12
2 4 9
2 3 10
3 6 7
3 5 8
5 8 5
5 7 6
7 9 4
9 12 1
9 11 2
9 10 3
です
実際にはデータフレーム名test1で
sortlist <- order(test1$a, pmax(test1$a,test1$c))
test1[sortlist,]
以上に実行しました

758:756,757
13/02/02 10:45:26.08
すいません 自己解決しました

759:132人目の素数さん
13/02/02 11:01:54.12
>>758
複数カラムをキーにしたソートなんて考えたことがなかった。
いったいどんなときに必要になるの?
# 表計算ソフトのように「見せる」目的なら理解できるけど。

760:132人目の素数さん
13/02/02 11:09:52.57
順位相関などを見るときにそういう処理をする可能性はあると思う

761:132人目の素数さん
13/02/02 12:03:35.44
再び質問失礼します
a,b
3,5
2,3
2,2
2,1
1,3
1,1
a列は必ず降順になっているときに
b列が降順になっていないとき
この例では5行目1,3ですが
これを削除したいのですが 関数化して自動で判別して削除したいです
どのようにしたら良いでしょうか

762:132人目の素数さん
13/02/02 12:16:56.00
複数の列でのソートは
doByパッケージのorderBy()が使いやすい。

763:132人目の素数さん
13/02/02 12:36:52.26
>>761

pmax()というのを初めて知った。

bの列を一行下げて頭にInfをいれたものをcとしてデータフレームにいれる、bとcに対してpmax()して、結果をdとしてデータフレームにいれる。dがbと一致しているところを落とす。

でどうだろう?

764:761
13/02/02 13:18:11.28
>>763
御助言ありがとうございます
しかし当方最近Rを使いだしたもので何をどうすればいいのか分かりません・・・
あつかましいのですが具体的にどんな感じに書けばいいでしょうか

765:132人目の素数さん
13/02/02 14:23:56.55
>>764
dat = read.csv(text = "a,b
3,5
2,3
2,2
2,1
1,3
1,1")

dat

dat$c = c(Inf , head(dat$b, -1))

dat

with(dat, pmax(b, c))

dat$d = with(dat, pmax(b, c)) == dat$c

dat

dat[dat$d,]

を想定。関数化されてないけど。もっと大きい例で動くはチェックしていない。

766:132人目の素数さん
13/02/02 15:20:57.47
>>763さんの解答にインスパイアされた別解。

> dat = read.csv(text = "a,b
+ 3,5
+ 2,3
+ 2,2
+ 2,1
+ 1,3
+ 1,1")
> dat[c(TRUE, diff(dat$b) < 0), ]
a b
1 3 5
2 2 3
3 2 2
4 2 1
6 1 1

767:132人目の素数さん
13/02/02 15:35:34.61
>>766の追記。

bが例えば、10, 8, 6, 9, 8, 5とかになっていると、
>>766の方法を1回だけ適用したのでは通用しない。

> d2
a b
1 3 10
2 2 8
3 2 6
4 2 9
5 1 8
6 1 5
> d2[c(TRUE, diff(d2$b) < 0), ]
a b
1 3 10
2 2 8
3 2 6
5 1 8
6 1 5

そのため、十分な回数を繰り返し適用することになる。
> sum(diff(d2$b) > 0)
[1] 1
これが0になるのが、終了条件。

768:132人目の素数さん
13/02/02 19:57:32.38
cummin
を使えばいいか?

769:132人目の素数さん
13/02/03 12:03:27.26
これなら1,9,8,1の並びも一回で行けるか?

dat = read.csv(text = "a,b
3,5
2,3
2,2
2,1
1,9
1,8
1,1")

dat

dat$cummin <- cummin(dat$b)

dat$correct <- with(dat, b == cummin)

dat

dat[dat$correct == TRUE,]

770:132人目の素数さん
13/02/03 13:34:45.07
r-base-core がみつからないとか言われるでござる…

771:132人目の素数さん
13/02/03 22:46:23.58
ビッグデータに関する本で
膨大なデータを統計処理して活用するために
RやJavaのhadoopが使える人材が求められてるって書いてあったな

772:132人目の素数さん
13/02/05 08:32:45.91
すみません、グラフで箱の左下をゼロで直交するようにしたいのですが (軸オンリーではなく箱で書きたいのです)、
Baseパッケージで何か良い方法ありませんでしょうか?
今は↓のように書いていますが、ablineで線を引くとはみ出してしまう等手間がかかるので、
簡単にかける方法をご存知の方おりましたらお願いします

plot(x=0,y=0,xlim=c(0,6),ylim=c(0,3),lwd=2,ann=F,cex.axis=1,las=1,type="n",axes=F)
axis(side=1,seq(0,6),lab=F,pos=0,tck=0); axis(side=2,seq(0,3),lab=F,tck=0,pos=0)
axis(side=3,at=0:6,lab=F,tck=0,pos=3); axis(side=4,at=0:3,tck=0,lab=F,pos=6)
axis(side=1,at=0,tck=0,pos=0)

>>735-37
レス忘れていました、申し訳ありません
Rconsoleが2つ存在し妙な読み込みがされていたのが原因でした
アドバイスありがとうございました

773:132人目の素数さん
13/02/05 09:04:30.55
>>772
> plot.new()
> box()
とすると、左下に原点が来るけど。
> points(0, 0)

774:132人目の素数さん
13/02/05 09:17:22.01
>>773の追記

R的なアプローチとして、複雑な手続きを関数化して簡単にする方法がある。

f772 <- function(){
plot(x=0,y=0,xlim=c(0,6),ylim=c(0,3),lwd=2,ann=F,cex.axis=1,las=1,type="n",axes=F)
axis(side=1,seq(0,6),lab=F,pos=0,tck=0); axis(side=2,seq(0,3),lab=F,tck=0,pos=0)
axis(side=3,at=0:6,lab=F,tck=0,pos=3); axis(side=4,at=0:3,tck=0,lab=F,pos=6)
axis(side=1,at=0,tck=0,pos=0)
}

とスクリプトの最初に書いておけば、
> f772()
以降は、これだけでよい。Baseパッケージのコマンドを探すよりも簡単。

775:132人目の素数さん
13/02/06 03:22:55.78
xaxs/yaxs (AXis Style)のことか
plot(1,1, xaxs = "i", yaxs = "i", xlim = c(0,1), ylim = c(0,1), tck = 0)
?parでbaseの細かいオプションの説明がみられる。

これも役立つかも
www.stat.auckland.ac.nz/~paul/RG2e/chapter3.html

776:132人目の素数さん
13/02/06 06:43:29.05
          __ノ)-'´ ̄ ̄`ー- 、_
        , '´  _. -‐'''"二ニニ=-`ヽ、
      /   /:::::; -‐''"        `ーノ
     /   /:::::/           \
     /    /::::::/          | | |  |
     |   |:::::/ /     |  | | | |  |
      |   |::/ / / |  | ||  | | ,ハ .| ,ハ|
      |   |/ / / /| ,ハノ| /|ノレ,ニ|ル' 
     |   |  | / / レ',二、レ′ ,ィイ|゙/   私は只の数ヲタなんかとは付き合わないわ。
.     |   \ ∠イ  ,イイ|    ,`-' |      頭が良くて数学が出来てかっこいい人。それが必要条件よ。
     |     l^,人|  ` `-'     ゝ  |        さらに Ann.of Math に論文書けば十分条件にもなるわよ。
      |      ` -'\       ー'  人          一番嫌いなのは論文数を増やすためにくだらない論文を書いて
    |        /(l     __/  ヽ、           良い論文の出版を遅らせるお馬鹿な人。
     |       (:::::`‐-、__  |::::`、     ヒニニヽ、         あなたの論文が Ann of Math に accept される確率は?
    |      / `‐-、::::::::::`‐-、::::\   /,ニニ、\            それとも最近は Inv. Math. の方が上かしら?
   |      |::::::::::::::::::|` -、:::::::,ヘ ̄|'、  ヒニ二、 \
.   |      /::::::::::::::::::|::::::::\/:::O`、::\   | '、   \
   |      /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ  ヽ、  |
  |      |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、  /:\__/‐、
  |      |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
   |     /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
   |    |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
    |   /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/

777:132人目の素数さん
13/02/06 17:31:58.49
>>773-775
レスありがとうございます
非常に参考になりました

778:132人目の素数さん
13/02/15 09:19:22.40
barplot と plotを重ねるときに、
軸(目盛の位置)がずれてしまうのですが、
揃える方法ってあるのでしょうか?


barplot(1:10, xlim=c(0,10), ylim=c(0,10))
par(new=T)
plot(1:10, col=2, xlim=c(0,10), ylim=c(0,10))

779:132人目の素数さん
13/02/15 10:52:07.52
>>778
よく分からないが、
> a <- barplot(1:10); points(a, 1:10, col = 2)
こうしたいの?

780:132人目の素数さん
13/02/15 11:18:55.04
>>779 

縦軸の0の位置が、barplot と plot で違うんで揃えたいんです。

781:132人目の素数さん
13/02/15 11:34:08.72
>>780
いや、そもそも揃っているけど。
> a <- barplot(1:10); points(a, rep(0, 10), col = 2)

782:781
13/02/15 11:39:38.94
>>780
あっ、分かった。plot()を無理矢理使っているんだ。
addオプションをサポートしているクラス以外では、plot()を重ねるのは禁止。
想定外の使用形態。
描画を重ねるとき、普通はpoints()やlines()やaxis()を使う。

783:132人目の素数さん
13/02/15 11:44:27.17
>>782 なるほど。ありがとうございます。

784:781
13/02/15 11:53:12.37
ちょっと説明が不親切だったかも知れないから、追記。

例えば、棒グラフと折れ線グラフを重ねたかったら、次のようにする。

x <- 1:10
n <- length(x)
y <- jitter(rep(10, n), 10)

op <- par(mai = c(1.02, 0.82, 0.82, 0.82))
a <- barplot(x, ylim = c(0, 13))
points(a, y, type = "l", lty = 2)
axis(4, label = (0:6) * 2 / 100, at = (0:6) * 2, las = 2)
par(op)

785:132人目の素数さん
13/03/09 12:17:39.65
結局、Rで中程度規模のデータを高速に集計できるパッケージ(関数)ってなんなの?
plyr : 中規模以上のデータで遅すぎ(idataframe使ってもそこまで変わらず)
aggregate : 普通
sqldf : まとも、でもRっぽくない。

他にお勧めがあったら教えて

786:132人目の素数さん
13/03/13 01:03:30.88
教えて下さい。
rawデータをcharacterにしたいです。

chromeの localstorageのデータを整理しようとしています。
ドメインごとのsqlite形式?ファイルがあり、ItemTableというテーブル名で、
key,valueの項目でデータが入っています。
valueのデータ形式がblob型です。

RSQLiteで、
ret <- dbGetGuery(con, "select value ItemTable")
でデータフレームでデータが返って来ました。
class(ret[1,1][[1]])
>> raw

それで、これから先、
ret[1,1][[1]] を characterにしたのですが、
どうすればいいのでしょうか?

787:132人目の素数さん
13/03/13 12:10:10.92
>>786
内部でSQLiteを使っているソフトが最近多いなと思っていたが、
Chromeもそうなんだ。

再現して検証できない質問なので、適当な回答になるけど、
as.character(ret[1,1][[1]])でどのようなエラーになりますか?

788:786
13/03/13 12:57:52.15
>>787
ありがとうございます。

chrome側のconsoleで、 localstorage.hoge = "abc" として、
sqlteデータを入れた時に、

R側でそのblob型のデータ(abcというデータ, 他のsqlite viewerで確認済み) を読むと、
> ret[3,2][[1]]
[1] 32 00 30 00 31 00 33 00 2d 00 30 00 33 00 2d 00 31 00 32 00 54 00 31 00 34
[26] 00 3a 00 33 00 35 00 3a 00 35 00 30 00 2e 00 31 00 34 00 33 00 5a 00

となり、
as.character(ret[3,2][[1]])
[1] "32" "00" "30" "00" "31" "00" "33" "00" "2d" "00" "30" "00" "33" "00" "2d"
[16] "00" "31" "00" "32" "00" "54" "00" "31" "00" "34" "00" "3a" "00" "33" "00"
[31] "35" "00" "3a" "00" "35" "00" "30" "00" "2e" "00" "31" "00" "34" "00" "33"
[46] "00" "5a" "00"

となります。
こういうのを16進数のbyteデータというのですよね?
これをcharacterにencode?してやりたいです。

789:132人目の素数さん
13/03/13 13:54:01.89
>>788
元データのエンコードが分からないと厳しいと思います。日本語でしょうか。
英語(ASCII)なら、
rawToChar(ret[3,2][[1]])とするとうまく行くかも知れません。

790:789
13/03/13 15:25:46.98
>>788
ちゃんと読んでいませんでした。申し訳ない。
これは「abc」という文字列なんですね。

ちなみに"abc"の8進数表記は次の通り
$ echo abc | od -to1c
0000000 141 142 143 012
a b c \n

10進数表記
$ echo abc | od -td1c
0000000 97 98 99 10
a b c \n

16進数表記
$ echo abc | od -tx1c
0000000 61 62 63 0a
a b c \n

>>788 を見る限り、abcじゃなさそうに思える。
16進数と仮定すると、
2 NUL 0 NUL 1 NUL 3 NUL - NUL 3 NUL -
NUL 1 NUL 2 NUL T NUL 1 NUL 4 NUL : NUL 3 NUL
5 NUL : NUL 5 NUL 3 NUL . NUL 1 NUL 4 NUL 3
NUL Z NUL
となるが、NULを飛ばすと、2013-3-12T14:35:53.143Zで、日付時間っぽいな。
これ以上は分からないので、識者の方にパス。

791:132人目の素数さん
13/03/13 15:28:55.56
>>789
ありがとうございます。
かなり前進しました。
さきほど、データの提示は、間違え(一つずれたものでした)

"abc"というデータを入れたときは、
ret[4,2][[1]]
[1] 61 00 62 00 63 00
rawToChar(ret[4,2][[1]],multiple=T)
[1] "a" "" "b" "" "c" ""
なぜか、空文字が入りますがOKです。

また、日本語の場合ですが、

私のwindows環境の文字コードは、cp932だと思います。
>Sys.getlocale()
[1] "LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;......."

それで、データとして  "あい" と localstorageに入れて、
RSQLiteでとりだしたところ、
ret[5,2][[1]]
[1] 42 30 44 30
となり、
これは、文字コード表を見ると、
unicode (あい) => UTF16形式 3042 3044 と、
2バイトの間隔で前後入れ替えしたものに見えます。

mapply(function(a,b)paste(b,a,sep=""), x[seq(1,3,2)], x[seq(2,4,2)])
[1] "3042" "3044"

これを、"あい" という文字で、
できれば、UTF8形式でファイルにおとしたいのですが、、

792:132人目の素数さん
13/03/13 15:31:21.55
>>789 さん
返事が入れ違いになりました。
"abc"ではなく、日付でした。
間違えてました。

793:132人目の素数さん
13/03/13 21:35:55.82
データの補間について質問させてください
下記のようなCSVファイル(,区切り)が存在します。ID、NAME、MONTHは各情報の最初の行にしかデータとして入っておりません。
---------- データ部 ----------
ID, NAME, MONTH, PRICE, NUMBER
AAA1, Apple, 1, 100, 10
, , , 98, 12
, , , 102, 8
AAA2, Orange, 2, 120, 3
, , , 130, 4
, , , 112, 8
------------------------------
これをデータフレームとして読み込みます。

ID NAME MONTH PRICE NUMBER
AAA1 Apple 1 100 10
"" "" "" 98 12
"" "" "" 102 8
AAA2 Orange 2 120 3
"" "" "" 130 4
"" "" "" 112 8
.......
となります。
ここでID NAME MONTHを上の行から補間したいのですが、どのようにすればよいでしょうか?

ID NAME MONTH PRICE NUMBER
AAA1 Apple 1 100 10
AAA1 Apple 1 98 12
AAA1 Apple 1 102 8
AAA2 Orange 2 120 3
AAA2 Orange 2 130 4
........
としたいです。補間さえできれば形式はデータフレームでなくても結構です。よろしくお願いいたします。

794:786
13/03/13 22:48:40.11
>>793
URLリンク(stackoverflow.com)
を参考にするといいよ。

""をNAに変えておかないといけないので、

df[ df == ""] <- NA
としておいて、

library(zoo)
na.locf(df)

まだ、rawデータからcharacterに変えられてない、、、

795:132人目の素数さん
13/03/14 09:59:33.96
>>793
単純にコピーするだけでは駄目なの?
> sample <- data.frame(matrix(c("AAA1","Apple",1,100,10,
+ "","","",98,12,
+ "","","",102,8,
+ "AAA2","Orange",2,120,3,
+ "","","",130,4,
+ "","","",112,8), ncol = 5, byrow = TRUE))
> names(sample) <- c("ID", "NAME", "MONTH", "PRICE", "NUMBER")
> sample
ID NAME MONTH PRICE NUMBER
1 AAA1 Apple 1 100 10
2 98 12
3 102 8
4 AAA2 Orange 2 120 3
5 130 4
6 112 8
> for(i in 1:(nrow(sample) - 1)){
+ if(sample[i+1, 1] == ""){
+ sample[i+1, 1:3] <- sample[i, 1:3]
+ }
+ }
> sample
ID NAME MONTH PRICE NUMBER
1 AAA1 Apple 1 100 10
2 AAA1 Apple 1 98 12
3 AAA1 Apple 1 102 8
4 AAA2 Orange 2 120 3
5 AAA2 Orange 2 130 4
6 AAA2 Orange 2 112 8

796:793
13/03/14 22:00:08.24
>>794
ありがとうございます。
無事うまくいけました。
質問に答えることができればよかったのですが、
残念ながら私にはわかりません。申し訳ありません。

>>795
実際のデータは100万行ほどありますので、
ループを回すと試してはいませんが時間がかかるかと。。。。

797:794
13/03/15 15:10:27.37
>>796
いえいえ。
791の疑問は、説明の仕方が悪い気がする。
単純な文字コードの問題なのだろうけど、そこのところがよくわかてっない。
他の言語でやりますのでOKです。

798:132人目の素数さん
13/04/02 00:12:39.59
DMwR::SMOTE関数のエラーについて教えてください。

以下の処理を実行するとエラーになります。
library( DMwR )

work00 <- data.frame( kbn=c(rep("A",12),rep("B",3)) , tuikavar=c(rnorm(12,20),rnorm(3,2)) )
SMOTE( kbn ~ . , data=work00 , perc.over=200 , perc.under=100 )

>以下にエラー `colnames<-`(`*tmp*`, value = c("kbn", "tuikavar")) :
>'names' 属性 [2] はベクトル [1] の長さと同じでなければなりません

ドキュメントを読みつくしたつもりなのですが、バグとしか思えません。
詳しい方、このバグは既知のものなのでしょうか?それとも回避方法があるのでしょうか?

799:132人目の素数さん
13/04/02 09:47:57.43
>>798
その作者のTorgoさんに聞く方がここで聞くよりも早いと思うぞ

800:狢 ◆yEy4lYsULH68
13/04/02 16:08:36.00


> 1 :西独逸φ ★:2007/08/05(日) 05:47:55 ID:???0
>徳島県警阿南署などは5日未明、東京都足立区千住寿町、
>筑波大学准教授、増田哲也容疑者(50)を
>県迷惑行為防止条例違反(痴漢行為)容疑で逮捕した。
>
>調べでは、増田容疑者は、4日午後4時20分ごろから約50分にわたり、
>JR牟岐線の列車内で、県内の
>専門学校生の女性(21)の胸や太ももなどを触った疑い。調べに対し、
>「夏休み期間に、講演活動を兼ね
>て旅行していた。好みの女性だったのでムラムラした」と話しているという。
>

801:132人目の素数さん
13/04/03 23:34:54.43
R 3.0.0 キタ━━(゚∀゚)━━!!

802:132人目の素数さん
13/04/04 12:51:51.74
3.0.0に上げたら、保存されたワークスペースに非互換部分が含まれていたみたいで、
R (正確にはR.app GUI)が起動しなくなったw
コンソールの方は使えたので、すぐに対処できたけど、R初心者は要注意だな。

バージョン上げたら、ライブラリのコンパイルをやり直さなくてはいけないので面倒だよな。
configureにオプションを渡さないといけないのもあるし。

> nrow(library()$results)
[1] 267

みんなは、いくつぐらいなの?

803:132人目の素数さん
13/04/04 13:07:53.30
rstudioの対応待ち

804:132人目の素数さん
13/04/04 13:11:23.49
メインPCのlibraryは262
3.1とか3.0.2が出るまでとりあえず様子見だな

805:132人目の素数さん
13/04/04 22:31:14.28
> nrow(library()$results)
[1] 2961

Rcmdrのせいなのか随分と多い。
自分の環境はR version 2.13.0 (2011-04-13)

806:132人目の素数さん
13/04/05 01:02:41.34
背景色とフォントカラーを変えたいんだけど、etc\Rconsoleを設定しても全然反映されない
font = TT MS Gothic
points = 20
background = black
normaltext = white
usertext = LightGreen
highlight = Red
style = normal # Style can be normal, bold, italic
何が悪いんだろう

807:132人目の素数さん
13/04/05 07:49:15.90
回答になっていなくて申し訳ないのだが、R以外のエディタを使うのが良いかと
デフォルトエディタらしいといえばそうなのだが、Rエディタはあまりに低機能過ぎる

モニタが大きい人ならRstudio、ノーパソ派ならNotepad++ & NppToR、あたりが個人的おすすめ

808:132人目の素数さん
13/04/05 09:33:00.80
>>806
は?ターミナルエミュレータの設定にRは関係ないだろ、と思ったら、
> font = TT MS Gothic
Windowsな方でしたか。
私も回答になっていなくて申し訳ないけど、
背景やフォントカラー、構文色強調を自由に設定できるEmacs+ESSがお薦め。
Emacsは初期学習コストがかかるが、超絶便利。
初めてESSを使ったときは、あまりの便利さに気を失いそうになった。

809:132人目の素数さん
13/04/05 15:31:00.18
>>803
3.0.0で使えているみたいだけど。
RStudio Ver.0.97.336

810:132人目の素数さん
13/04/06 08:59:21.34
RStudioで普通に問題なく使えてる。一応2.15.3も残してはあるが3.0.0
インスコした後まだ立ち上げる機会がない。

811:132人目の素数さん
13/04/06 13:04:58.94
なんか、ノートン先生に怒られた…(;・∀・)


絶対パス: c:\program files\r\r-3.0.0\bin\i386\r.dll
____________________________
____________________________
コンピュータの評価日 2013/04/05 12:12:11
前回の使用 利用不能
起動項目 いいえ
起動済み はい
____________________________
____________________________
少数のユーザー
Norton コミュニティの 50 人未満のユーザーがこのファイルを使いました。
____________________________
ごく新しい
このファイルの更新日はここ 1 週間以内です。
____________________________

これは危険度が高いファイルです。
____________________________
脅威の詳細
SONAR 保護はコンピュータ上で疑わしいプログラムの活動を監視します。
____________________________


元ファイル:
r.dll

812:132人目の素数さん
13/04/07 12:09:36.61
怪しいサイトから拾い食いしただろ

813:132人目の素数さん
13/04/07 17:13:19.15
よほどヘビーにR使う人でなければ、Emacs系はコスト>利益
「 (略) 作業効率が上がる(ように錯覚でき)ます. (RjpWikiより)」

814:132人目の素数さん
13/04/08 11:00:43.17
>>813
逆。試しに使ってみるとか、RCommanderしか使わないとか、
年に数回だけ使うとかそんなレベルなら、
コンソール/RCommanderでもよいが、
ある程度使うなら、試行錯誤するためにも、エディタは必須。
常用しているテキストエディがなければ、微妙だけど。

815:132人目の素数さん
13/04/08 12:42:11.56
3.0.0は「だいぶ2系が落ちついたから番号あげてみた」程度だって公式では言ってたけど、非互換なところたくさんあるの?

816:132人目の素数さん
13/04/09 19:51:21.47
>>815
過去にsave.image()しまくった資産があるのでなければ、
基本的に非互換なんて気にしなくてもよいと思うよ。

でも、Ubuntuのリポジトリは2.15.3のままだな。
単に遅れているだけか、何か理由があるのかな。
Debianの方は3.0.0が来た。

817:132人目の素数さん
13/04/10 01:47:48.52
ベン図を描きたいのだけど、お勧めある?
因みに2.15だとgplotsが無いみたいでvenn()は使えないみたいでした。

818:132人目の素数さん
13/04/10 08:58:38.30
>>817
> RSiteSearch("Venn")
でヒットした関数やパッケージは試した上での質問かどうかで回答は変わるけど、
VennDiagramパッケージのような専用パッケージはどう?

819:132人目の素数さん
13/04/10 10:52:02.97
URLリンク(www.biomedcentral.com)
>>817-818同じくVennDiagramに一票

820:132人目の素数さん
13/04/12 10:13:54.71
ちょっと教えてくれろ。

x <- rnorm(100);hist(x, prob=T, ann=F) ;par(new=T) ;plot(density(x),col="red")
こんな感じの正規分布っぽいグラフでXの範囲指定して、
Y軸0から確率密度の赤線までの面積を表したいんだけど、
ここを色づけする方法が判らない、
例えばXが1~2の間を塗るとき具体的にどんなコードになるか教えて下さい。

821:132人目の素数さん
13/04/12 15:37:00.07
ペイント使って塗ったらいいじゃん

822:132人目の素数さん
13/04/13 00:06:14.95
>>820

dat <- with(density(rnorm(100)),data.frame(x,y))

library(ggplot2)

ggplot(data = dat, mapping = aes(x = x, y = y)) +
geom_line() +
layer(data = dat, mapping = aes(x=ifelse(x >1 & x < 2 ,x,0), y=y), geom = "area", geom_params=list(fill="red",alpha=0.5)) +
scale_y_continuous(limits = c(0,max(dat$y)))

823:132人目の素数さん
13/04/13 10:48:56.27
>>822
ありがとう

824:132人目の素数さん
13/04/13 23:48:23.04
ここがRの本スレか。
R自体統計プログラムなのかグラフィックソフトウェアなのかよくわからんけど本スレは数学板なのね。
数学嫌いだわ…。Rまで嫌いになりそう

825:132人目の素数さん
13/04/13 23:52:28.69
むしろ数学界隈以外での R の用途が気になるな。なんでもできるっちゃそうなんだけど。

826:132人目の素数さん
13/04/14 00:04:02.13
>>825
学生時代数学にはつらい思いでがあって…

数学的能力が全くダメでもいろんな運の巡り合わせでRと向き合わなきゃいけなくなる人もいますんでご容赦を

827:132人目の素数さん
13/04/14 05:11:16.14
統計学もグラフィックスも数学じゃないよ。数学者はそんなもの相手にせんわ

828:132人目の素数さん
13/04/14 07:37:32.81
カール・フリードリヒ・ガウス...

829:132人目の素数さん
13/04/14 11:00:26.70
          __ノ)-'´ ̄ ̄`ー- 、_
        , '´  _. -‐'''"二ニニ=-`ヽ、
      /   /:::::; -‐''"        `ーノ
     /   /:::::/           \
     /    /::::::/          | | |  |
     |   |:::::/ /     |  | | | |  |
      |   |::/ / / |  | ||  | | ,ハ .| ,ハ|
      |   |/ / / /| ,ハノ| /|ノレ,ニ|ル' 
     |   |  | / / レ',二、レ′ ,ィイ|゙/   私は只の数ヲタなんかとは付き合わないわ。
.     |   \ ∠イ  ,イイ|    ,`-' |      頭が良くて数学が出来てかっこいい人。それが必要条件よ。
     |     l^,人|  ` `-'     ゝ  |        さらに Ann.of Math に論文書けば十分条件にもなるわよ。
      |      ` -'\       ー'  人          一番嫌いなのは論文数を増やすためにくだらない論文を書いて
    |        /(l     __/  ヽ、           良い論文の出版を遅らせるお馬鹿な人。
     |       (:::::`‐-、__  |::::`、     ヒニニヽ、         あなたの論文が Ann of Math に accept される確率は?
    |      / `‐-、::::::::::`‐-、::::\   /,ニニ、\            それとも最近は Inv. Math. の方が上かしら?
   |      |::::::::::::::::::|` -、:::::::,ヘ ̄|'、  ヒニ二、 \
.   |      /::::::::::::::::::|::::::::\/:::O`、::\   | '、   \
   |      /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ  ヽ、  |
  |      |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、  /:\__/‐、
  |      |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
   |     /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
   |    |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
    |   /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/

830:132人目の素数さん
13/04/15 07:52:40.36
あるデータをplot(density(data))でグラフ化してます。
任意のX区間を指定して面積を求めようとしてるのですが、やり方を教えて下さい。

また、正規分布だと、dnorm(c(0,0.2,0.4,0.6,0.8,1))とやればX値に対応したY値がでるみたいですが、
任意のデータをプロットしている場合、X値からY値を取り出すにはどうやればいいのでしょうか?

831:132人目の素数さん
13/04/15 08:54:48.29
規制されて書き込めなかった。
普通はpolygon()を使う

>>820
> x <- rnorm(100);hist(x, prob=T, ann=F)
> a <- density(x)
> polygon(a$x,a$y, col="red")

832:132人目の素数さん
13/04/15 09:12:17.89
>>830
こちらも、>>831と同じ要領。
> data <- runif(100)
> plot(density(data))

> a <- density(data)
として、念のために幅を確認して、
> head(diff(a$x))
[1] 0.003151153 0.003151153 0.003151153 0.003151153 0.003151153 0.003151153
横が0.003151153と分かったので、矩形の面積を計算して合計。
> sum(diff(a$x)[1] * a$y )
[1] 1.000883

833:132人目の素数さん
13/04/15 09:21:38.51
>>825
統計的裏付けのない実感で申し訳ないが、
確かに、10年くらい前は数学・数理統計の関係者がほとんどを占めていたと思う。
しかし、ここ5年ほどで急速に、Rをプログラミング言語としてとらえるIT関係のユーザが増えたし、
心理学研究や医学研究にも地道に普及している。
Rユーザ会の出席者を見渡しても、数学関係者はマイノリティになりつつあると思う。

834:132人目の素数さん
13/04/15 12:01:36.43
こんな記事もある

「次に来る」プログラミング言語を占ってみる
URLリンク(www.atmarkit.co.jp)

今後の動向を予感させるもう1つの動きは、プログラミング言語「R」が2012年1月のTIOBE PCIの19位に入ったことだ。
(中略)Rが話題になり始めた背景には、最近注目を浴びているある種のコンピュータ技術がある。
大量のデータを効率良く処理する技術だ。「ビッグデータ」という言葉を耳にした方は多いと思う。(中略)
RはGoogleが社内のデータ解析に活用しているなど、ビッグデータを扱う企業において重要なプログラミング言語となっており、今後広い範囲で話題になる可能性がある。

835:132人目の素数さん
13/04/15 21:12:53.25
後藤大地ってどんなやつかと思ったら小物もいいとこじゃん。聞く耳もつに
値しないね。

836:132人目の素数さん
13/04/15 23:59:44.25
ちゃんと取材にいってる人だと思うが、どちらかというとPCハードの記者さんだよね。

事実として、企業のコミットが増えてlinuxみたいにRもコミッター増えてんじゃないの?


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch