我有两个数据帧:
>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,当我尝试根据m1
Var1
的拆分时
x <- split(m1, m1$Var1)
长度(x)是10而不是4,6个元素显示这种值
$c#
[1] Var1 Freq1 Freq2
<0 rows> (or 0-length row.names)
我想从列表中删除这些元素,或者在合并时有任何方式我的级别数等于temp df的级别。
答案 0 :(得分:2)
您可以在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
答案 1 :(得分:1)
您可以按
删除空白关卡m1$Var1 <- factor(m1$Var1)