質問
私は次のスクリプトを実行していますよ
cause = c(1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2);
time = c(1, 1, 2, 3, 3, 2, 2, 1, 1, 2, 2);
table(cause, time)
そして、私は、次の取得ます:
time
cause 1 2 3
1 2 2 2
2 2 3 0
私が欲しいのはこれです:
time
cause 1 2 3
Maltreat 2 2 2
Non-Maltr 2 3 0
だから、私の質問は:どのようにRでテーブルの行の名前を変更します。
?同じ静脈では、どのようにあなたがそのテーブルの列の名前を変更するのでしょうか?
解決
それを行うための1つの方法は、文字列の代わりにインデックスの要因やリストを使用することです。だから、ます:
cause1 <- c("Maltreat", "Non-malt")[cause]
> print(cause1)
[1] "Maltreat" "Maltreat" "Maltreat" "Maltreat" "Maltreat" "Non-malt"
[7] "Maltreat" "Non-malt" "Non-malt" "Non-malt" "Non-malt"
> table(cause1, time)
time
cause1 1 2 3
Maltreat 2 2 2
Non-malt 2 3 0
そして、あなたはメモリや速度について心配している場合には、Rは保存された文字列全体の単一のインスタンス、およびインデックスで行わ残りの部分と、効率的に内部的にこの種のものを表現するのはかなり良いです。
ところで、あなたは、データフレームと、長期的には幸せになるだろう
> df <- data.frame(cause=as.factor(c("Maltreat", "Non-malt")[cause]), time=time)
> summary(df)
cause time
Maltreat:6 Min. :1.000
Non-malt:5 1st Qu.:1.000
Median :2.000
Mean :1.818
3rd Qu.:2.000
Max. :3.000
> table(df)
time
cause 1 2 3
Maltreat 2 2 2
Non-malt 2 3 0
他のヒント
これを行うには、2つの簡単な方法があります:
z <- table(cause, time)
COLNAMES / rownames機能を使用します:
> colnames(z)
[1] "1" "2" "3"
> rownames(z)
[1] "1" "2"
または使用dimnamesます:
> dimnames(z)
$cause
[1] "1" "2"
$time
[1] "1" "2" "3"
> dimnames(z)$cause
[1] "1" "2"
いずれの場合も、ベクトルとしてあなたの名前を選択し、それらを割り当てます:
> dimnames(z)$cause <- c("Maltreat","Non-malt")
> z
time
cause 1 2 3
Maltreat 2 2 2
Non-malt 2 3 0
plyrの素晴らしい「切り上げ」とコマンドを「名前の変更」を忘れないでください!
所属していません StackOverflow