首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中合并两个不等大小的数据帧

如何在R中合并两个不等大小的数据帧
EN

Stack Overflow用户
提问于 2014-04-04 10:02:47
回答 2查看 640关注 0票数 1

我有两个数据:

代码语言:javascript
复制
>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

现在我要做的是:

代码语言:javascript
复制
m1 <- merge(temp, top, by.x = "Var1", by.y = "Var2", all.x = TRUE)

他们的m1是:

代码语言:javascript
复制
       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进行拆分时

代码语言:javascript
复制
x <- split(m1, m1$Var1)

长度(X)是10而不是4,这6个元素显示了这样的值。

代码语言:javascript
复制
$c#
[1] Var1 Freq1  Freq2  
<0 rows> (or 0-length row.names)

我想从列表中删除这些元素,或者当我合并时,我的级别数是否等于temp。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-04 10:05:53

您可以通过以下方式删除空级别

代码语言:javascript
复制
m1$Var1 <- factor(m1$Var1)
票数 1
EN

Stack Overflow用户

发布于 2014-04-04 10:19:29

您可以将droplevels封装在merge周围,以删除未使用的级别:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22859624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档