带R的矩阵:列名

时间:2016-10-13 11:58:05

标签: r matrix

我正在尝试使用以下示例执行R matric:

> dput(a)
structure(list(from = c("City1", "City2", "City3", "City4", "City5", 
"City1", "City2", "City3", "City4", "City5", "City1", "City2", 
"City3", "City4", "City5", "City1", "City2", "City3", "City4", 
"City5", "City1", "City2", "City3", "City4", "City5"), to = c("City1", 
"City1", "City1", "City1", "City1", "City2", "City2", "City2", 
"City2", "City2", "City3", "City3", "City3", "City3", "City3", 
"City4", "City4", "City4", "City4", "City4", "City5", "City5", 
"City5", "City5", "City5"), N = c(0L, 4L, 2L, 4L, 0L, 4L, 0L, 
0L, 1L, 3L, 1L, 2L, 0L, 2L, 0L, 2L, 0L, 2L, 0L, 3L, 1L, 3L, 1L, 
2L, 0L)), .Names = c("from", "to", "N"), row.names = c(NA, -25L
), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x00000000001c0788>)

我想要一个简单的matric

from N.City1 N.City2 N.City3 N.City4 N.City5
1: City1        
2: City2        
3: City3        COUNT OF OCCURENCES
4: City4        
5: City5     

我可以得到它: final <- reshape(a,idvar="from",timevar="to",direction="wide")

> final
    from N.City1 N.City2 N.City3 N.City4 N.City5
1: City1       0       4       1       2       1
2: City2       4       0       2       0       3
3: City3       2       0       0       2       1
4: City4       4       1       2       0       2
5: City5       0       3       0       3       0 

但是列名很奇怪。我有“N”吗?在每个列名称前面?我可以使用gsub()删除它,但是有可能有更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我们可以使用dcast

中的data.table轻松完成此操作
library(data.table) 
dcast(a, from ~to, value.var = "N")
#    from City1 City2 City3 City4 City5
#1: City1     0     4     1     2     1
#2: City2     4     0     2     0     3
#3: City3     2     0     0     2     1
#4: City4     4     1     2     0     2
#5: City5     0     3     0     3     0