题
我运行下面的脚本:
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中重命名表中的行
?在同样,你将如何重命名表的列?
解决方案
要做到这一点的方法之一是使用字符串来代替索引的因素或列表。所以:
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
其他提示
有两个简单的方法可以做到这一点:
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