よく使う関数

以前投稿した記事ですのが、そのまま掲載しておきます。ここに記載しているような内容は、ChatGPTなどの対話型AIに尋ねたら詳しく教えてくださいます。

プログラムの最初に入れる関数

Rにcsvファイルを読み込むの準備をご参照ください(Rにcsvファイルを読み込む

関数

密度関数 density確率関数 probability分位点関数 quantile
t分布dt(x, df)pt(q, df)qt(p, df)
ポワソン分布dpois(x, lambda)ppois(q, lambda)qpois(p, lambda)
正規分布dnorm(x, mean, sd)pnorm(q, mean, sd)qnorm(p, mean, sd)
指数分布dexp(x, rate)pexp(q, rate)qexp(p, rate)
F分布df(x, df1, df2)pf(q, df1, df2)qf(p, df1, df2)
カイ二乗分布dchisq(x, df)pchisq(q, df)qchisq(p, df)
二項分布dbinom(x, size, prob)pbinom(q, size, prob)qbinom(p, size, prob)

変数の変換

library(tidyr)
dat <- dat %>% mutate(
  sexc = factor(sex), 
  hospc = factor(if_else(hosp == "A病院", 1, 0)),
  visit = case_when(
    visit == "bdi.pre" ~ 0,
    visit == "bdi.2m" ~ 2,
    visit == "bdi.3m" ~ 3,
    visit == "bdi.5m" ~ 5,
    visit == "bdi.8m" ~ 8
  )
)

点の種類 pch

plot(0:25, rep(1, 26),
    pch=0:25, cex=2.5,
    xlab="", ylab="",
    yaxt="n"
)

x <- c(1, 2, 3)
y <- c(2, 4, 6)
z <- c("p", "l", "o", "b", "c", "h", "s", "S", "n")

par(mfrow = c(3, 3))
for(k in z)plot(x, y, type=k)
par(mfrow=c(1, 1))

線の種類

x <- c(1, 2, 3)
y <- c(2, 4, 6)

par(mfrow=c(3, 3))
for(k in c(0: 6))plot(x, y, type="l", lty=k, lwd=2)
par(mfrow=c(1, 1))

その他の関数

csvファイルの作成

write.csv(
        x,
        file="ファイル名.csv,
        fileEncoding="Shift-JIS") #日本語含む場合のエンコーディング

グラフを2行3列で表示したいとき

最後は1行1列に戻しときましょう

par(mfrow=c(2, 3))
#ここにグラフを描く
par(mfrow=c(1, 1))

変数を定義するときよく使う関数

以下の変数をdat1に追加する場合
dat1の変数x1を名義変数に変更した変数 x1_cを追加
dat1の変数x2が6の場合には1、他は0とする x2_cを追加
dat1の変数x3が平均以上の場合は1、平均未満の場合は0となる変数 x3_cを追加
dat1の変数x4が10未満の場合は0、10以上の場合は1となる変数 x4_cを追加

libraly(dplyr)
dat1 <- dat1 %>% dplyr::mutate(
    x1_c=as_factor(x1),
	x2_c=if_else(x2==6, 1, 0),
	x3_c=if_else(x3>=median(x3), 1, 0),
	x4_c=if_else(x4<10, 0, 1)
)

回帰直線を引くときに便利

#回帰直線
fit <- lm(Y~X, data=dat1 )
round(summary(fit)$coefficients[c(2, 8)],3)
b <- coef(fit)
with(dat1, plot(X, Y, main=""))
xx <- with(dat1, seq(min(X), max(X), length=100))
with(dat1, lines(xx, b[1]+b[2]*xx, lwd=1))# 回帰直線のプロット

p値のみを抽出するとき(小数点以下第3位まで)

単回帰
ウィルコクソン
フィッシャー正確検定
t検定

fit <- lm(y~x1, data=dat1)
    round(summary(fit)$coefficients[c(2, 8)], 3)

round(
    wilcox.test(
        dat1$"変数1", dat1$"変数2", paired=F, exact=F, alternative="t"
    )$p.value, 3
)

round(
    fisher.test(
    xtabs("データ"~"変数1"+"変数2", data=dat1)
    )$p.value, 3
)

round(
    fisher.test("分割表")$p.value, 3
)

round(
    t.test(
    dat1$"変数1", dat1$"変数2"
    )$p.value, 3
)

変数xを以下の定義に置き換えた変数x_cをdat1に追加する場合

Aの場合、A2
Bの場合、B2
Cの場合、C2
その他は、etc

libraly(dplyr)
dat1 <- dat1 %>% mutate(
    x_c=dplyr::case_when(
        x=="A"~"A2",
	    x=="B"~"B2",
	    x=="C"~"C3",
	    TRUE~"etc"
    )
)

dat1にあるageを4つにカテゴリー化して、変数age_cを追加します

ageが50未満の場合、50未満
ageが50以上の場合、60未満の場合、50-60
ageが60以上の場合、70未満の場合、60-70
ageが70以上の場合、70以上

library(dplyr)
dat1 <- mutate(
    dat1, age_c = 
        if_else(
            data$age<50 , "50未満", 
        if_else(
            data$age>=50 & data$age<60, "50-60", 
        if_else(
            data$age>=60 & data$age<70, "60-70",
        "70以上"
        )))
)
タイトルとURLをコピーしました