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

RでStataのdtaを読み込む

いくつか方法があるが、パッケージhavenを使う方法が比較的手軽に使えるようである。以下は覚書。

 

require(haven)

url <- "http://www.principlesofeconometrics.com/stata/broiler.dta"

data.df <- read_dta(url)

 

参考文献:

How to Read and Write Stata (.dta) Files in R with Haven

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分以上費やし、なんだか少し悔しかったので、自戒のためにブログに書いておくことにする。将来、他の誰かの役に立ちますように。)

 

hollyemblem.medium.com

huxtableのhuxregを使ってlmの結果をワードに出力

自分用覚書:huxregと quick_docxは便利なのでオススメ
 

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