Rで生成したデータの前処理

投稿者: Anonymous Rでいろいろな次数についてモデルのAICを計算させ for(p in 1:k){ for(q in 1:k){ : aic <- infocriteria(fit) answer<-cbind(p,q,r,aic) print(answer) }} のように出力させているのですが、次数が高く最初に計算したものがコンソールから消えてしまいます。自動化させたいので変数を設定して格納させようとか考えているのですがどのような方法が考えられますでしょうか? また、出力結果ですが、 p q r s Akaike 1 1 1 1 4.07 Bayes 1 1 1 1 4.08 Shibata 1 1 1 1 4.08 Hannan-Quinn 1 1 1 1 4.08 p q r s Akaike 1 1 1 2…(Continue Reading)

パネルデータの同一IDの標本の絞り込み

投稿者: Anonymous パネルデータにおけるIDごとの抽出 の続きです。 同じIDの最新データのみを抽出したいです。 具体的には ID,PANEL,Q1,Q3,Q6,Q8,Q11,Q13,Q16,Q18,Q33,Q34,Q128,Q137,Q299 50,9,1,39,NA,13,NA,NA,NA,NA,5,0,90,90,0 50,10,1,40,2,14,3,13,8,69,7,0,84,84,0 50,11,1,16,2,15,3,12,8,68,9,0,100,100,0 51,7,1,38,2,13,3,12,NA,NA,4,3,0,0,0 51,8,1,39,2,14,3,13,NA,NA,7,0,36,36,0 51,9,1,40,2,15,NA,NA,NA,NA,6,0,59,59,0 51,10,1,41,2,16,3,15,NA,NA,7,0,86,86,0 51,11,1,42,2,17,3,16,NA,NA,6,0,80,80,0 52,7,1,40,2,13,3,7,NA,NA,0,0,0,0,0 52,8,1,41,2,14,3,8,NA,NA,0,0,0,0,0 53,7,1,34,2,5,3,5,8,59,0,0,0,0,0 53,8,1,35,2,6,3,6,8,60,4,0,0,0,0 を ID,PANEL,Q1,Q3,Q6,Q8,Q11,Q13,Q16,Q18,Q33,Q34,Q128,Q137,Q299 50,11,1,16,2,15,3,12,8,68,9,0,100,100,0 51,11,1,42,2,17,3,16,NA,NA,6,0,80,80,0 52,8,1,41,2,14,3,8,NA,NA,0,0,0,0,0 53,8,1,35,2,6,3,6,8,60,4,0,0,0,0 としたいと考えています。(最新のデータのみを抽出) PANELのところが第何回調査ということです。 行の抽出なのでdplyrのfilterを使いたいですがID内でのPANELの最大値の抽出の仕方がわからないです。 https://stackoverflow.com/questions/24237399/how-to-select-the-rows-with-maximum-values-in-each-group-with-dplyr を参考に data %>% group_by(ID) %>% filter(PANEL=max(PANEL)) とやってもうまくいかないです。 エラーメッセージはError: filter condition does not evaluate to a logical vector. です。 よろしくお願い致します。 解決 一度、欲しい形のIDとPANELのセットだけを含むテーブルを作成し、 それに結合してはどうでしょうか? master <- data %>%…(Continue Reading)

データ前処理の関数化について

投稿者: Anonymous データ前処理を関数化しようと試みておりますが、3つほど気になるところがありエラーが出てしまうので質問させていただきます。よろしくお願い致します。 1, 関数の中に関数を入れても問題がないのでしょうか。 以下の関数でnumがきちんと働いてくれるか気になります。 syori <- function(variables,num){ setwd(“C:\Users\hoge\Desktop”) names <- list.dirs(“csv”, full.names = F, recursive = FALSE) files <- list.files(“csv”, full.names = F, pattern=”csv”,recursive = FALSE) reading <- function(x){ library(dplyr) setwd(“C:\Users\hoge\Desktop”) kaerichi<- fread(x) %>% select_(variables)%>% filter(Q1 == num) %>% mutate(cnum=num) return(kaerichi) } for (i in names) { setwd(“C:\Users\hoge\Desktop\csv”) mypath <- file.path(getwd(), paste0(i,”.csv”)) assign(i,…(Continue Reading)

dplyr & ggplot2: リストに入った回帰分析の結果をまとめて図にする

投稿者: Anonymous データ1~3に対して複数の回帰分析を行い、その結果をこのサイトにあるような図にまとめたいと考えています。 回帰分析の結果は以下のようにまとまっています。 > lmRes_set Source: local data frame [5 x 3] Groups: <by row> # A tibble: 5 × 3 iter lmResRand lmResBias * <dbl> <list> <list> 1 1 <data.frame [7 × 5]> <data.frame [7 × 5]> 2 2 <data.frame [6 × 5]> <data.frame [6 × 5]> 3 3 <data.frame [6 × 5]>…(Continue Reading)

Rで連番のデータフレームを加工して連番で出力する

投稿者: Anonymous Rでデータ前処理中ですが2つほど質問があるので書かせていただきます。 1 data1~data3というデータフレームを読み込み済みで, sum1.csv~sum3.csvというファイルを生成したいと考えています。(実際はもっとパターンが多いため単純に全パターン書くというのは厳しいです。)assignやcsvdataのあたりで読み込みが上手く行かずエラーが出てしまうのでアドバイスをお願い致します。アルゴリズムとしましてはdataにdata1を代入、それを加工しつつcsvdataに加工し出力、dataにdata2を上書きして同じことを繰り返す…という感じです。 library(tidyverse) main <- for(p in 1:3){ assign(data,paste(“data”, p, sep = “”)) csvdata <- data %>% mutate(hogehoge…) write_csv(csvdata,paste0(“sum”,p,”.csv”)) } 2 bind_rows(as.data.frame(a1),as.data.frame(a2),as.data.frame(a3)) とデータフレームを縦にくっつけたいのですが、3つのデータフレーム間に空白行がほしいです。 どのように対処すればよいでしょうか? 解決 こういう感じのコードではどうでしょうか: # パッケージ読み込み library(tidyverse) # テスト用にdata.frame作成 # 以下のコードでdata1-data3というdata.frameができます data_list <- paste(“data”, 1:3, sep = “”) for(i in 1:length(data_list)) { assign( data_list[i], data.frame( x1 = rnorm(10), x2…(Continue Reading)

dplyrを用いてデータフレーム内の型を統一したい

投稿者: Anonymous データクレンジングの途中で Error: Can not automatically convert from character to integer in column “hoge”. というエラーが出るので、dplyrを用いてデータフレーム内の型を統一(=全てのカラムをcharacterではなくnumericに変換)したいのですが、 https://stackoverflow.com/questions/34123199/using-mutate-each-from-dplyr-to-convert-all-numeric-varaibles-to-factor を参考に iris %>% mutate_each(funs(as.numeric),sapply(df,is.numeric)) を利用したいのですが、このコードのis.numericを否定にして(=数値でない時applyしたい)うまく動かしたいです。 わかる方よろしくお願い致します。 追記 http://qiita.com/ytakeda/items/b996d93b33803409efb3を使うこともできますが、パイプで連続処理したいです。 また、mutate_each(funs(as.numeric), which(sapply(., is.character)))で今回はエラー回避することが出来ました。 解決 mutate_ifやmuatate_at関数を利用して、対象のデータ型あるいは変数を指定できます。 例のirisデータセットの数値が あらかじめ数値型としてセットされているので、一旦文字列型に変更しています str(iris) ‘data.frame’: 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 … $ Sepal.Width…(Continue Reading)

Rのパッケージのロードが失敗する

投稿者: Anonymous R3.3.2をWin8.1でRstudio1.0で使っています。 tidyverseを用いようとすると > library(tidyverse) Loading tidyverse: ggplot2 Loading tidyverse: tibble Loading tidyverse: tidyr Loading tidyverse: readr Loading tidyverse: purrr Loading tidyverse: dplyr Error in get(Info[i, 1], envir = env) : cannot open file ‘C:/Users/user/Documents/R/R-3.3.2/library/scales/R/scales.rdb’: No such file or directory Error : .onAttach は attachNamespace()(’tidyverse’ に対する)の中で失敗しました、詳細は: call: NULL error: ‘ggplot2’ に対するパッケージもしくは名前空間のロードが失敗しました Error: ‘tidyverse’ に対するパッケージもしくは名前空間のロードが失敗しました…(Continue Reading)

まとめられたデータフレームを展開する

投稿者: Anonymous Rを使用しています。 no1,no2, 1, 14, 3, 25, 4, 43, 6, 65, のようなデータフレームがありますが、これはno1=1,2のときno2=14、no1=4,5のときno2=43です。(3つ以上同じ数が連続して省略されることもあります。) どのようにすれば no1,no2, 1, 14, 2, 14, 3, 25, 4, 43, 5, 43, 6, 65, のような形に変換できるでしょうか。 解決 tidyr パッケージの fill 関数を使うと、 NA値をその列の直前の NA でない値で埋められます。 > library(dplyr) > library(tidyr) > df1 <- dplyr::data_frame(no1 = c(1L, 3L, 4L, 6L), + no2 = c(14L, 25L, 43L,…(Continue Reading)