【问题标题】:Merging two data frames with different sizes and missing values合并具有不同大小和缺失值的两个数据框
【发布时间】:2014-03-06 13:04:03
【问题描述】:

我在合并 R 中的两个数据框时遇到问题。

第一个由 6 个变量的 103731 个 obs 组成。我必须用来合并的变量有 77111 个唯一值,其余的是 NAs,值为 0。第二个包含这些变量的频率加上 NAs 的频率,因此一帧为 77112 obs 用于 2 个变量。

我需要得到的结果帧是第一个与合并变量的频率相结合的帧,因此 df 为 103731 obs 与合并变量的每个值的频率(因此如果 freq > 1 并且对于每个NA(或0))。

谁能帮帮我?

我现在得到的结果包含一个 1 894 919 obs 的数据框,我使用了:

tot = merge(df1, df2, by = "mergingVar", all= F, sort = F);  

我也经常使用“all=”,但没有一个变体给出正确的 df。

【问题讨论】:

  • 您能否提供一个可重现的数据示例?

标签: r merge na merging-data


【解决方案1】:

为什么不直接取第一个表的频率表呢?

a <- data.frame(a = c(NA, NA, 2,2,3,3,3))
data.frame(table(a, useNA = 'ifany'))

     a Freq
1    2    2
2    3    3
3 <NA>    2

mutate 来自plyr

ddply(a, .(a), mutate, freq = length(a))

   a freq
1  2    2
2  2    2
3  3    3
4  3    3
5  3    3
6 NA    2
7 NA    2

【讨论】:

    猜你喜欢
    • 2018-08-21
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多