我有两个数据:
>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)长度(X)是10而不是4,这6个元素显示了这样的值。
$c#
[1] Var1 Freq1 Freq2
<0 rows> (or 0-length row.names)我想从列表中删除这些元素,或者当我合并时,我的级别数是否等于temp。
发布于 2014-04-04 10:05:53
您可以通过以下方式删除空级别
m1$Var1 <- factor(m1$Var1)发布于 2014-04-04 10:19:29
您可以将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 chttps://stackoverflow.com/questions/22859624
复制相似问题