R logo

下記のようなデータフレームがあり、この表の行名(左側の列)と列名(一番上のヘッダー行)とを変更したい場合。

Estimate Std. Error Pr(>|z|) OR CI_low CI_high
(Intercept) -1.160 2.883 0.687 0.31 0.00 89.13
Age 0.003 0.027 0.915 1.00 0.95 1.06
Sex 0.433 0.477 0.364 1.54 0.61 3.93
LBD_subtype 0.595 0.468 0.204 1.81 0.72 4.54
ADNC -0.756 0.551 0.170 0.47 0.16 1.38

行名 (row name) の変更

"rownames"

rownames(x) <- value

上表の4行目、"LBD_subtype" のアンダースコアを外して、"LBD subtype" に変更したい場合(データフレーム名は "res3")。

rownames(res3) <- c("(Intercept)", "Age", "Sex", "LBD subtype", "ADNC")
        
#処理後の結果を反映
print(rownames(res3))

※ 関数を実行した時点では列名は変化しない。処理後の結果を反映させるために代入演算子での指定が必要。

Estimate Std. Error Pr(>|z|) OR CI_low CI_high
(Intercept) -1.160 2.883 0.687 0.31 0.00 89.13
Age 0.003 0.027 0.915 1.00 0.95 1.06
Sex 0.433 0.477 0.364 1.54 0.61 3.93
LBD subtype 0.595 0.468 0.204 1.81 0.72 4.54
ADNC -0.756 0.551 0.170 0.47 0.16 1.38

列名 (column name) の変更

"dplyr" パッケージの "rename"

今回は、"dplyr" パッケージの "rename" で。

"rename()" だけでいいんだけど、他のパッケージとバッティングする場合は、前に "dplyr::" をつける。

列名の指定に "" は不要。

rename(data, 変更後の列名 = 変更前の列名)
dplyr::rename(res3, B = Estimate, P value = Pr(>|z|), SE = Std. Error, 95% CI (low) = CI_low, 95% CI (high) = CI_high)

#処理後の結果を反映
print(colnames(res3))

パイプ演算子でつなげる場合。

データフレームの指定と、列名を変更したデータフレームの代入を同時に行えるので便利。

res3 <- res3 %>%
dplyr::rename(B = Estimate, P value = Pr(>|z|), SE = Std. Error, 95% CI (low) = CI_low, 95% CI (high) = CI_high)
B SE P value OR 95% CI (low) 95% CI (high)
(Intercept) -1.160 2.883 0.687 0.31 0.00 89.13
Age 0.003 0.027 0.915 1.00 0.95 1.06
Sex 0.433 0.477 0.364 1.54 0.61 3.93
LBD subtype 0.595 0.468 0.204 1.81 0.72 4.54
ADNC -0.756 0.551 0.170 0.47 0.16 1.38

 

列番号で指定もできる。

rename(data, 変更後の列名 = 列番号)
res3 %>%
dplyr::rename(res3, "beta" = 1)

#処理後の結果を反映
print(colnames(res3))
beta SE P value OR 95% CI (low) 95% CI (high)
(Intercept) -1.160 2.883 0.687 0.31 0.00 89.13
Age 0.003 0.027 0.915 1.00 0.95 1.06
Sex 0.433 0.477 0.364 1.54 0.61 3.93
LBD subtype 0.595 0.468 0.204 1.81 0.72 4.54
ADNC -0.756 0.551 0.170 0.47 0.16 1.38

"colnames"

普通に "colnames" でも変更できるけれど、その場合は、変更したい列以外の列名も全て指定する。

colnames(x) <- value
colnames(res3) <- c("B", "SE", "P value", "OR", "95% CI (low)", "95% CI (high)")

#処理後の結果を反映
print(colnames(res3))
B SE P value OR 95% CI (low) 95% CI (high)
(Intercept) -1.160 2.883 0.687 0.31 0.00 89.13
Age 0.003 0.027 0.915 1.00 0.95 1.06
Sex 0.433 0.477 0.364 1.54 0.61 3.93
LBD subtype 0.595 0.468 0.204 1.81 0.72 4.54
ADNC -0.756 0.551 0.170 0.47 0.16 1.38

References