【问题标题】:R - Adding Data Frame to Matrix [duplicate]R - 将数据框添加到矩阵[重复]
【发布时间】:2019-03-20 14:03:18
【问题描述】:

我正在尝试将具有位置数据和值的数据框(视为向量)转换为使用位置数据作为行名和列名的矩阵。

(运行 sn-ps 以查看布局示例。)

向量示例:

 <table>
  <tr>
    <th>"Longitude"</th>
    <th>"Latitude"</th>
    <th>"Value"</th>
  </tr>
  <tr>
    <td>1</td>
    <td>2</td>
    <td>10</td>
  </tr>
  <tr>
    <td>3</td>
    <td>3</td>
    <td>100</td>
  </tr>
  <tr>
    <td>2</td>
    <td>1</td>
    <td>65</td>
  </tr>
</table> 

矩阵示例:

 <table>
  <tr>
    <th></th>
    <th>1</th>
    <th>2</th>
    <th>3</th>
  </tr>
  <tr>
    <th>1</th>
    <td>0.00</td>
    <td>0.00</td>
    <td>0.00</td>
  </tr>
  <tr>
    <th>2</th>
    <td>0.00</td>
    <td>0.00</td>
    <td>0.00</td>
  </tr>
  <tr>
    <th>3</th>
    <td>0.00</td>
    <td>0.00</td>
    <td>0.00</td>
  </tr>
</table> 

我想要的结果是:

 <table>
  <tr>
    <th></th>
    <th>1</th>
    <th>2</th>
    <th>3</th>
  </tr>
  <tr>
    <th>1</th>
    <td>0.00</td>
    <td>65.00</td>
    <td>0.00</td>
  </tr>
  <tr>
    <th>2</th>
    <td>10.00</td>
    <td>0.00</td>
    <td>0.00</td>
  </tr>
  <tr>
    <th>3</th>
    <td>0.00</td>
    <td>0.00</td>
    <td>100.00</td>
  </tr>
</table> 

本质上,我想将数据框视为一系列向量并将它们转换为矩阵,但我过去的尝试导致矩阵将自身转换为列表。

有人知道怎么做吗?

提前谢谢你。

【问题讨论】:

  • 试试xtabs(Value ~ Latitutde + Longitude, data = df1)
  • 啊。这不是代码 sn-ps 的目的。只需将您的输入复制为文本并使用代码标记。
  • 使用dput 以我们可以使用的格式粘贴数据会更好。

标签: r matrix matrix-transform


【解决方案1】:

我们可以使用来自base Rxtabs 轻松做到这一点

out <- xtabs(Value ~ Latitude + Longitude, df1)
names(dimnames(out)) <- NULL
out
#    1   2   3
#1   0  65   0
#2  10   0   0
#3   0   0 100

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 2020-10-31
    • 2014-02-26
    • 2022-01-03
    • 2021-09-13
    相关资源
    最近更新 更多