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を使っているのだが、最近知った(古くからある機能らしい)。
imputeTSを使って補完
na_interpolation(x = dataset$variable_name, option = "linear")
以下のサイトの情報から自分が使うところだけ抜き出した:
参考文献:
RでStataのdtaを読み込む
いくつか方法があるが、パッケージhavenを使う方法が比較的手軽に使えるようである。以下は覚書。
require(haven)
url <- "http://www.principlesofeconometrics.com/stata/broiler.dta"
data.df <- read_dta(url)
参考文献:
Rstudioでソースのあるディレクトリに移動する方法
Rstuidoを使っている人限定:
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
参考文献
dplyrのselectとlagが衝突する場合の対応
メモ:最初に書いた内容に間違いあったため、修正。
一年ほど前に書いたRのコード(dplyr)が動かないことがわかった。コードを追ったところ(1)dplyr::selectがMASS::selectと衝突、(2)dplyr::lagがstats::lagと衝突していることが分かった(1年前は問題なく動いたような気がするのだが・・・)。
やり方としては参考文献にあるように
select <- dplyr::select
と上書きする。
覚書1:「tidyverseを最後にロード(library(tidyverse) )しても関数の衝突は解決しない」(場合がある?)ようだ。そのため上書きするのが確実な模様。
覚書2:Tidyverseのページに衝突の話はあった。
Conflicts between the tidyverse and other packages — tidyverse_conflicts • tidyverse
tidyverse_conflicts()
(これが分かるだけで30分以上費やし、なんだか少し悔しかったので、自戒のためにブログに書いておくことにする。将来、他の誰かの役に立ちますように。)
huxtableのhuxregを使ってlmの結果をワードに出力
install.packages("huxtable")
require("huxtable")
lm.res1 <- lm(mpg ~ wt , data = mtcars)
lm.res2 <- lm(mpg ~ wt + qsec, data = mtcars)
lm.hux <- huxreg(lm.res1, lm.res2, number_format = "%.4f")
lm.hux
quick_docx(lm.hux, file="lmHuxSample.docx")
以下のマニュアルを読むと結構楽しい。
https://cran.r-project.org/web/packages/huxtable/vignettes/huxreg.html