【问题标题】:combine two pieces of data in R合并R中的两条数据
【发布时间】:2013-03-14 03:40:14
【问题描述】:

我不知道如何最好地描述这一点,所以我只会告诉你。我有两个变量。
答:

              ID
1             121
2             122
3             123
4             124
5             125
6             126
7             127
8             128
9             129

和乙:

       var1     var2       var3 
1      57.1     116.5      73.0
2      38.1      15.8      22.7
3      84.2      99.2      72.2

我希望他们以这样的方式结束:

              ID
1             121   57.1
2             122   116.5
3             123   73.0
4             124   38.1
5             125   15.8
6             126   22.7
7             127   84.2
8             128   99.2
9             129   72.2

这有意义吗?我想维护原始变量并按顺序添加一个列,该列是另一个变量的行。最好我喜欢这个作为数据框。

提前致谢。

【问题讨论】:

  • 您能否显示dput(A)dput(B) 的结果以使示例可重现?

标签: r list vector concatenation


【解决方案1】:

data.frames 和矩阵默认填充by column,因为你想创建一个按行填充的数字向量,你需要在强制转换为数字变量之前转置 data.frame,所以它会按顺序排列你想要的。

A$value <- c(t(B))

转置data.frame 得到一个矩阵,该矩阵被c 强制转换为数值向量。

【讨论】:

  • +1。这是一个非常非常巧妙的解决方案。在这里,我将使用melt 发布解决方案
  • 谢谢,我总是很欣赏一个很好的解释来回答。您的示例中的“价值”是什么?是 A 的列的名称还是我要添加到 A 的新列的名称?
  • @user1714887 这是A 中包含值的列的名称(如果它已经存在,它将被这些新值覆盖)
【解决方案2】:

假设Bdata.frame,你可以这样做:

cbind(A,var.name=as.vector(as.matrix(B)))

你可以传递新的列名而不是var.name

【讨论】:

  • 这也有效。但是我对编程知之甚少,无法知道哪个是“更好”的答案。也谢谢你。
  • 两者都可以,只是我觉得这个解决方案更明确/可读,但这只是我的看法。
猜你喜欢
  • 2016-08-01
  • 2020-10-16
  • 2020-11-09
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2014-10-04
  • 2014-04-14
  • 1970-01-01
相关资源
最近更新 更多