RstudioからPythonを使う

「とりあえずRstudio上でPythonが少し使えればいい」というライトユーザーなので、簡単そうな方法は以下の通り:

 

まず、reticulateをインストールする


        install.packages("reticulate")
        

 

reticulateを使って、minicondaをインストールする


        reticulate::install_miniconda()
    

 

(minicondaはC:/Users/username/AppData/Local/r-miniconda/にインストールされる)

 

必要なパッケージをインストールする。たとえばpandasをインストールする場合は以下のようにする

 


        reticulate::py_install("pandas")
        

 

File→New file→Python scriptを選択してPythonスクリプトを書く。あとはいつものRstudioの使い方と同じ

 

Minicondaのアップデートは


        reticulate::miniconda_update(path = miniconda_path())
        

 

RstudioでのPythonサポート全般については:

https://support.posit.co/hc/en-us/articles/1500007929061-Using-Python-with-the-RStudio-IDE

reticulateについては:

https://rstudio.github.io/reticulate/

reticulateでの(Pythonの)パッケージインストールについては:

https://rstudio.github.io/reticulate/articles/python_packages.html

 

 

tblからdouble(numeric)の列だけ取り出す

tibbleからdoubleのデータだけ取り出したい場合、どうすればいいか少し手間取ったので、覚書を残す。


    require(dplyr)
    require(nycflights13)

    weather <- nycflights13::weather %>% 
      select(origin, time_hour, temp, humid, precip)
   

注釈:このweatherというデータはoriginがchar, time_hourがdate, それ以外がdoubleになっている。

 

まず、うまく行かないやり方:


    weather %>% select_if(is.double)
   

うまく行かない理由:date型がdoubleを継承しているため、is.doubleでdate型のtime_hourも返されてしまう。

 

うまくいくやり方(is.numericを使う):


    weather %>% select_if(is.numeric)
   

うまくいく理由:よくわからない。numeric→double→dateと継承しているはずなので、is.numericでもdate型(time_hour)が返されるのが(仕様上は)正しいような気がするが、現時点(2024/03/09)のdplyrではdate型(time_hour)が返ってこない(参考文献2を参照されたい)。Bad know-howかも。

 

参考文献

Introduction to tsibble

r - Why is `select_if(., is_double)` returning dates? - Stack Overflow

ワードでSEQを使って連番を作成する(式番号の自動割り振りなど)

[挿入]→[テキスト]→[フィールド(F)]→Seqを選択し、「フィールド・コード」の欄に「SEQ equation」などと入力する。

 

注意:SEQがコマンド、equationが識別子になる。

 

トラブルシューティング:連番が機能せず数字の順番がおかしくなった場合は、該当箇所を選択し、右クリックで「フィールド更新」を行なう

 

support.microsoft.com

[GNU R] githubからネット経由でローカルにrdaファイルを読み込む

まず、carsをcars.rdaとして保存する。

save(cars, file="cars.rda")

githubにcars.rdaをアップロードして、以下のようにloadする。

file_url <- "https://github.com/koiti-yano/colab/blob/main/data/cars.rda?raw=true"
load(url(file_url))

dplyrでlag()を使って、valueをずらすと空いた欄にNAが入るためそれを0に置き換える

require(tidyverse)

date <- seq(as.Date("2020-1-1"), as.Date("2020-12-01"), by = "month")
date
value <- seq(1:12)

test <- data.frame(date, value)
test

# たとえば、lag()を使って、valueをずらすと
# 空いた欄にNAが入ることを確認するためのコード
# 1つ下にずらす
test |> mutate(value1 = lag(value,n=1)) |> 
  mutate(value2 = lag(value, n=2)) -> test1
test1

# replace_na()を使わずにNAを0に置き換える方法:

# https://stackoverflow.com/questions/49947592/replace-na-with-zero-in-dplyr-without-using-list
test1 %>% replace(is.na(.), 0) -> test2
test2

seq()は日・月・年ごとの年月を生成できる

date <- seq(as.Date("2020-1-1"), as.Date("2021-12-01"), by = "month")
date

日ごとにしたければ、by="day"、四半期ごとにしたければ、by="quarter"

 

長くRを使っているのだが、最近知った(古くからある機能らしい)。