【问题标题】:Merging data frames of different row length in R [duplicate]在R中合并不同行长的数据帧[重复]
【发布时间】:2015-04-04 07:47:43
【问题描述】:

您好,我寻找解决方案已经有一段时间了。我敢肯定答案很简单,但我一直在拉扯我的头发!

我有两个相似的数据框(实际上一个代表更完整的数据集)。它们都有两列,一列包含作为因子的字符串值,另一列包含数值。

df.A 看起来像这样:

Category     Number
A            1
B            2
C            3
D            4

df.B 看起来像这样

Category     Number
A            5
B            6
C            7

这些类别 (ABCD) 在两个数据帧之间是通用的。在试图让 df.B 拥有一个具有 NA 或 0 值的类别 D(我正在使用百分比,所以 NA 或 0 都可以),我的代码如下所示:

proto <- df.A
proto$number <- NULL
df.B <- rbind.fill(proto,df.B)

我的想法是这将为 D 类添加第四行并给出 NA 值,但结果却是

Category     Number
A             NA
B             NA
C             NA
D             NA
NA            5
NA            6
NA            7

我尝试从 df.A 和 df.B 的类别中删除因子类,尝试使用 rbind.fill.matrix 代替...老实说,我对 R 很陌生,这给我带来了很多麻烦.如何让 R 认识到 ABCD 是跨数据帧的相同因素?

【问题讨论】:

  • 您需要merge(df.A,df.B,by='Category',all=T)。具有讽刺意味的是,您的问题标题中已经包含“合并”一词:)
  • @MaratTalipov 似乎解决了它!谢谢
  • @DavidArenburg 我想像我这样的初学者在尝试简单的东西之前会尝试跳到更复杂的解决方案......我想我有很多东西要学:P

标签: r plyr


【解决方案1】:

你可以通过merge来达到你想要的效果:

merge(df.A,df.B,by='Category',all=T)

这将产生以下输出:

#  Category Number.x Number.y
#1        A        1        5
#2        B        2        6
#3        C        3        7
#4        D        4       NA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 2014-08-13
    • 2018-06-29
    • 2017-09-04
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多