【问题标题】:how to merge two unequal size data frame in R [duplicate]如何在R中合并两个大小不等的数据框[重复]
【发布时间】:2014-04-04 10:02:47
【问题描述】:

我有两个数据框:

>temp

      Var1                Freq1
1   file-upload             1
2   image-processing        1
3     mime-types            1
4       php                 5


>top 

        Var2               Freq2
1   file-upload             1
2   image-processing        1
3     mime-types            1
4       php                 5
5      upload               1
6      firefox              2
7   machine-learning        1
8     matlab                1
9        r                  2
10      c#                  7

现在我在做:

m1 <- merge(temp, top, by.x = "Var1", by.y = "Var2", all.x = TRUE)

他们m1 将是:

       Var1               Freq1        Freq2
1   file-upload             1            1
2   image-processing        1            1
3     mime-types            1            1
4       php                 5            5

m1$Var1 的级别数显示为 10 而不是 4,当我尝试根据 Var1 的值拆分 m1

x <- split(m1, m1$Var1)

length(x) 是 10 而不是 4,6 个元素显示这种值

$c#
[1] Var1 Freq1  Freq2  
<0 rows> (or 0-length row.names)

我想从列表中删除这些元素,或者有什么方法可以让我在合并时的级别数等于 temp df 的级别数。

【问题讨论】:

    标签: r merge


    【解决方案1】:

    您可以将droplevels 包裹在merge 周围以删除未使用的级别:

    x <- data.frame(var=letters[1:3],freq1=1:3)
    y <- data.frame(var=letters[2:4],freq2=2:4)
    
    merge(x,y)$var
    [1] b c
    Levels: a b c
    
    droplevels(merge(x,y))$var
    [1] b c
    Levels: b c
    

    【讨论】:

      【解决方案2】:

      您可以通过

      删除空级别
      m1$Var1 <- factor(m1$Var1)
      

      【讨论】:

      • 谢谢它的工作......但是当我们进行合并时有什么方法可以丢弃 t ???
      • 我不这么认为——除非你在 temp 和 top 中将 Var1 设置为字符向量而不是因子
      猜你喜欢
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 2015-09-04
      • 2023-03-06
      • 1970-01-01
      相关资源
      最近更新 更多