从非对称数据框中获取方形矩阵

时间:2015-11-02 14:52:39

标签: r

我是R的初学者。我有一系列有关已婚人士姓氏的数据。

    Id_mar  Wife  Husband
1      1    Smith Johnson
2      2    Smith  Carter
3      3    White  Carter
4      4    Wang   Smith
5      5    White  Carter

我需要以方形矩阵的形式获得它(以便能够以各种方式操纵它)。 所以我想我必须首先施展它:

data.melt<-melt(dat.mar,id=c('Wife','Husband'))
dat.melt$value<-1    
dat.cast<-cast(dat.melt, Wife~Husband, length)

       Wife Carter Johnson Smith
    1 Smith      1       1     0
    2  Wang      0       0     1
    3 White      2       0     0

然后将其转换为矩阵:

dat.mat<-as.matrix(dat.cast)
      Carter Johnson Smith
Smith      1       1     0
Wang       0       0     1
White      2       0     0

但是现在,我如何准确地添加列和行,以便我得到一个方形矩阵,其行和列按正确的字母顺序排列?看起来像这样:

      Carter Johnson Smith    Wang   White
Carter     0       0     0       0       0
Johnson    0       0     0       0       0
Smith      1       1     0       0       0
Wang       0       0     1       0       0
White      2       0     0       0       0

1 个答案:

答案 0 :(得分:2)

根据预期的输出,我们可以使用<?php header('Content-Type: text/html; charset=utf-8'); require_once("connect.php"); if(isset($_POST['id'])) $gelenid = $_POST['id']; else $gelenid = $_GET['id']; //{ //$gelenid=$_POST["id"]; // $gelenid="36"; $sql_query="select * from places where ADDED_BY='$id'"; if(!mysql_query($sql_query)) { // } else { $sonucDizisi['basliklar'] = array(); while($oku=mysql_fetch_array(mysql_query($sql_query))) { $temp['ilan'] = $oku['TITLE']; array_push($sonucDizisi['basliklar'], $temp); } echo json_encode($sonucDizisi); } //} ?> (在评论中提到的@David Arenburg)table已转换的妻子&#39;和丈夫&#39;列,将factor指定为两列的levels ed sort元素(&#39; Un1&#39;)

unique

或者我们可以使用 Un1 <- sort(unique(unlist(df1[-1]))) table(factor(df1$Wife, levels=Un1), factor(df1$Husband, levels=Un1)) # Carter Johnson Smith Wang White # Carter 0 0 0 0 0 # Johnson 0 0 0 0 0 # Smith 1 1 0 0 0 # Wang 0 0 1 0 0 # White 2 0 0 0 0 中的mtabulate

qdapTools