2015-03-28 4 views
-1

у меня есть кадр данных (Df) со следующими данными выборки:Замена значения коэффициента в кадре данных другого значения

  state.ut  district year AA  BB  CC 
    1 ANDHRA PRADESH  ADILABAD 2001 50  30  16 
    2 ANDHRA PRADESH  ANANTAPUR 2001 23  30  7 
    3 ANDHRA PRADESH  CHITTOOR 2001 27  34  14 
    4 ASSAM    GUWAHTI 2001 20  20  17 
    5 ASSAM    JORHAT 2001 23  26  12 
    6 DELHI    NEW DELHI 2001 10  20  23 

Я хочу, чтобы заменить Андхра-Прадеш, где когда-либо это происходит в кадре данных с Андхра-Прадеш. ANDHRA PRADESH происходит во многих местах кадра данных, но только в одном столбце (state.ut), но не в других столбцах.

Следующая R-код выдает ошибку:

> df$state.ut[df$state.ut=="ANDHRA PRADESH"]<-"Andhra Pradesh" 
Warning message: 
In `[<-.factor`(`*tmp*`, df$state.ut == "ANDHRA PRADESH", : 
    invalid factor level, NA generated 

Я не могу понять причину ошибки. Будем благодарны за руководство.

+0

Пожалуйста, [поиск] (http://stackoverflow.com/search?tab=votes&q= [r]% 20% 22invalid% 20factor% 20level% 2c% 20NA% 20generated% 22), прежде чем спрашивать. – Henrik

+0

Я искал, но я не мог найти ответ на этот вопрос. – user3282777

ответ

2

Вы можете изменить соответствующий уровень фактора напрямую, просто нужно выяснить, в каком положении он находится в векторе уровней факторов (здесь он находится в положении 1):

> levels(df$state.ut) 
[1] "ANDHRA PRADESH" "ASSAM"   "DELHI"   
> levels(df$state.ut)[1] <- "Andrha Pradesh" 
> df 
     state.ut district year AA BB CC 
1 Andrha Pradesh ADILABAD 2001 50 30 16 
2 Andrha Pradesh ANANTAPUR 2001 23 30 7 
3 Andrha Pradesh CHITTOOR 2001 27 34 14 
4   ASSAM GUWAHTI 2001 20 20 17 
5   ASSAM JORHAT 2001 23 26 12 
6   DELHI NEW DELHI 2001 10 20 23 

Переменные класса factor имеют a levels, где хранятся факторы (например, «Andra Pradesh» и «ASSAM»). Вы можете посмотреть уровни факторной переменной, используя levels() для переменной. Вы можете назначить этой переменной любой из уровней, которые уже определены, но вы не можете использовать «новый» (неопределенный) коэффициент. Поэтому в вашем случае «Андра Прадеш» - это такой новый (неопределенный) факторный уровень, и вы должны сначала сказать R, что это теперь часть факторов. На самом деле это особый случай, потому что вы хотите заменить все вхождения существующего уровня фактора («ANDRA PRADESH») с новым. Вот почему вы можете просто заменить старый факторный уровень на новый. В противном случае вам нужно будет определить «Андра Прадеш» как дополнительный факторный уровень.

+0

Да. Оно работает. Пожалуйста, объясните немного. Благодарю. – user3282777

+0

@ пользователь3282777, добавлен пояснение. Также прочитайте '? Factor'. –

+0

Спасибо. Это совершенно ясно. – user3282777

Смежные вопросы