2014-09-19 1 views
0

Я хочу объединить два кадра данных, но полученный в результате объединенный фрейм данных имеет только «необходимое» количество уровней в одной из его переменных. Как это:R - слияние и результирующие коэффициенты факторов

df1 <- data.frame(country=c("AA", "BB")) 
df2 <- data.frame(country=c("AA", "BB", "CC"), name=c("Country A", "Country B", "Country C")) 
df3 <- merge(df1, df2, by="country") 

Тогда:

> df3 
    country  name 
1  AA Country A 
2  BB Country B 

, который я ожидал.

Однако, почему существуют 3 уровня для имени фактора, если есть только 2 строки данных?

> str(df3) 
'data.frame': 2 obs. of 2 variables: 
$ country: Factor w/ 2 levels "AA","BB": 1 2 
$ name : Factor w/ 3 levels "Country A","Country B",..: 1 2 

Как избавиться от 'Country C' в df3?

> table(df3) 
     name 
country Country A Country B Country C 
    AA   1   0   0 
    BB   0   1   0 

ответ

1

Вы можете попробовать:

table(droplevels(df3)) 
#   name 
#country Country A Country B 
# AA   1   0 
# BB   0   1 

Здесь уровни df2$name не отбрасываются пока вы делаете merge. Другим способом было бы:

df3$name <- factor(df3$name) 
table(df3) 
#  name 
#country Country A Country B 
# AA   1   0 
# BB   0   1 
+0

Благодаря этому ответу я был в состоянии найти другие ссылки, которые помогли мне понять еще проблемы, как: http://stackoverflow.com/questions/1195826/dropping-factor- уровни-в-subsetted-данных-кадр-в-г? RQ = 1 –