【问题标题】:subset using R language使用 R 语言的子集
【发布时间】:2014-06-18 13:39:12
【问题描述】:

我有两张桌子

在第一个表中,我有两列。在第一列中,值从 1 到 200 万(称为 x)。在第二列中,我有随机数(称它们为 y)。

在第二个表中,我有两列。在第一列中,我有相同的 x 值,但它们不是从 1 到 200 万,而是按随机递增的顺序排列,如 222 、 249 、 562 .. 等等。在第二列中,我有随机数(称它们为 z)。

现在,我正在尝试使用第一个表中的 y 值将第三列添加到我的第二个表中。我决定使用 apply 。但是,您可以使用 join 或 merge - 以更有效的方式为准。这里 x 值连接 y 和 z。

要从最少的数据开始,您可以使用以下代码:

t1 <- cbind(1:20, sample(100:999, 20, TRUE))
t2 <- rbind(c(2, 4), c(6, 12), c(17, 18))
apply(t2, 1, function(...) )

你能帮我填补……空白吗?

输出的格式应该是:

2    4    --
6    12   --
17   18   --

【问题讨论】:

  • 为什么需要使用apply?为什么不从 plyr 合并或加入?
  • ok,我们也可以使用join或者merge
  • 我正在尝试这个合并(t2,t1, by = intersect(names(x),..)

标签: r apply


【解决方案1】:

您可以为此使用merge

merge(as.data.frame(t2), as.data.frame(t1), by='V1')
  V1 V2.x V2.y
1  2    4  751
2  6   12  298
3 17   18  218

【讨论】:

    【解决方案2】:

    这符合您的要求吗?

    require(plyr)
    
    t1 <- as.data.frame(cbind(1:20, sample(100:999, 20, TRUE)))
    t2 <- as.data.frame(rbind(c(2, 4), c(6, 12), c(17, 18)))
    
    t3 <- join(t2, t1, type = "left", by = "V1")
    t3
    > t3
      V1 V2  V2
    1  2  4 779
    2  6 12 898
    3 17 18 903
    

    【讨论】:

      猜你喜欢
      • 2020-04-23
      • 2014-09-11
      • 2011-06-06
      • 2010-11-22
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 2017-05-12
      • 1970-01-01
      相关资源
      最近更新 更多