【问题标题】:Missing values, merging in R缺失值,在 R 中合并
【发布时间】:2017-12-12 14:23:57
【问题描述】:

我有 2 个列表(长度不同)。第一个日期、金额的列;第二个日期,金额的列。我需要将这两个列表组合起来,因此对于第一个对应的日期数量,将替换为第二个的数量。 List1 one 包含所有需要的日期, list2 - 不包含。这就是为什么我需要 list2 的相应日期的金额级别,如果日期缺失 - 列表 1。

在我看来,像 inner_join 这样带有日期键的东西应该会有所帮助,但我不知道如何使用 r 代码来实现。

例如

List 1:
Date - Amount 
1/09 - 0
2/09 - 0
3/09 - 0
4/09 - 0

List 2:
Date - Amount 
1/09 - 300
3/09 - 50

结合(我需要的:)):

Date - Amount 
1/09 - 300
2/09 - 0
3/09 - 50
4/09 - 0

有人可以帮忙吗? 我试过inner_join(l1, l2),但结果是空的。 (可能是因为我比较日期???)

【问题讨论】:

  • 能否请您提供您的代码。没有人可以解决您的问题,因为我们只知道有两张桌子。你需要给我们一些可以合作的东西。
  • 我没有。我尝试了合并和加入方法,但没有奏效。将其视为解决问题的任务
  • 好吧这么说!我们怎么知道你尝试了什么(我们中没有多少人是心灵感应的)?编辑您的问题以包括您尝试过的内容、合并和加入方法。也可能是您的表格的一个简短示例。这可能只是一个简单的错字(我们都做过)。

标签: r list transform


【解决方案1】:

假设 df1 和 df2 的长度相同,并且存在唯一日期的 1-1 对应关系(或其他一些唯一匹配行的方式),对数据帧进行排序,然后将 df2 的列分配给 df1:

df1[order(df1$date,)]
df2[order(df2$date,)]
df1$amount <- df2$amount

如果您不想覆盖 df1$amount:

df1$new_amount = df2$amount

如果您不能简单地按日期对数据帧进行排序,请查看 dplyr 或 data.table 包以了解如何进行高效连接:

dplyr

data.table

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2017-04-10
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    相关资源
    最近更新 更多