【问题标题】:Reshaping database using reshape package使用 reshape 包重塑数据库
【发布时间】:2019-05-31 11:17:51
【问题描述】:

我想重塑我的数据库的一些行。特别是我有一些行,它为 Id 列复制。我想将此行转换为列。我提供了一个代码,它代表了我的数据库的一个示例。 我正在尝试使用 t() 并重塑,但它并没有这样做。谁能给我一些建议?

test<-data.frame(Id=c(1,1,2,3),
    St=c(20,80,80,20),
    gap=seq(0.02,0.08,by=0.02),
    gip=c(0.23,0.60,0.86,2.09),
    gat=c(0.0107,0.989,0.337,0.663))

【问题讨论】:

  • 你能告诉我们你期望输出的样子吗?
  • 是的!我希望最终数据库的每一行都有一个 Id。具有 9 个不同列的最终数据框,例如:Id、St、gap、gip、gat、St2 gap2、gip2、gat2。带 2 的值是主体数据库第二行的引用。
  • @matte85 你应该编辑你的问题并在其中添加预期的输出,人们会更容易帮助你。

标签: r database reshape


【解决方案1】:
setNames(data.frame(t(test))[2:nrow(data.frame(t(test))),], test$Id)

          1      1      2      3
St  20.0000 80.000 80.000 20.000
gap  0.0200  0.040  0.060  0.080
gip  0.2300  0.600  0.860  2.090
gat  0.0107  0.989  0.337  0.663

它有助于提供预期的输出。这是你所期望的吗?

【讨论】:

  • 当然!我想问其他问题。如果我想维护 Id 广告行并转换其他变量?如何修改代码?是否有可能为列 st 提供整数?
  • 为此,您应该重新排列列。有多种方法可以做到这一点:test &lt;- test %&gt;% dplyr::select(St, Id, gap, gip, gat)。这里不能有整数:原因是变量类型总是引用列。一列只能是整数、数字或字符串,但不能是混合的。否则,价值观总是会被强制执行。如果一个值是字符串,则整列都是字符串,依此类推。
  • 感谢您的可用性。现在想到的最后一个问题(严肃的)是查看操作的结果。如果我只想转置具有双 id 的行并将其带到列中,其他列保持原样我应该怎么做?
  • 请为此主题打开一个新问题。我们很乐意提供帮助,但一篇文章不应包含多个问题和答案:)
猜你喜欢
  • 1970-01-01
  • 2019-10-17
  • 2012-02-09
  • 1970-01-01
  • 2020-07-29
  • 2013-10-29
  • 2021-02-15
  • 2013-08-24
  • 1970-01-01
相关资源
最近更新 更多