Помогите преобразовать не числовой столбец в числовой - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь помочь моему другу, директору по продажам, разобраться в его зарегистрированных данных звонков.В частности, есть одна колонка, в которой он заинтересован: «Распоряжение».В этом столбце есть строковые значения, и я пытаюсь преобразовать их в числовые значения (т. Е. «Не отвечено», преобразованное в 1, «Без ответа», преобразованное в 2 и т. Д.) И удалить любую строку без введенных значений.Я создал фреймы данных, использовал их как .numeric, создал и удалил столбцы / строки и т. Д. Безрезультатно.Я просто пытаюсь запустить простой код R, чтобы дать ему некоторое представление.Любая помощь очень ценится.Заранее спасибо!

PS Я не уверен, должен ли я предоставить какой-либо код из-за того, что в нем много деликатной информации (личных номеров и адресов электронной почты).

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Кроме того, вы можете создать новый столбец и заполнить его числовыми значениями, используя оператор ifelse.Для иллюстрации предположим, что это ваш фрейм данных:

df <- data.frame(
  Disposition = c(rep(c("answer", "no answer", "whatever", NA),3)),
  Anything = c(rnorm(12))
)
df

   Disposition    Anything
1       answer  2.54721951
2    no answer  1.07409803
3     whatever  0.60482744
4         <NA>  2.08405038
5       answer  0.31799860
6    no answer -1.17558239
7     whatever  0.94206106
8         <NA>  0.45355501
9       answer  0.01787330
10   no answer -0.07629330
11    whatever  0.83109679
12        <NA> -0.06937357

Теперь вы определяете новый столбец, скажем, df $ Analysis, и присваиваете ему номера на основе информации в df $ Disposition:

df$Analysis <- ifelse(df$Disposition=="no answer", 1,
                      ifelse(df$Disposition=="answer", 2, 3))
df

      Disposition    Anything Analysis
1       answer  2.54721951        2
2    no answer  1.07409803        1
3     whatever  0.60482744        3
4         <NA>  2.08405038       NA
5       answer  0.31799860        2
6    no answer -1.17558239        1
7     whatever  0.94206106        3
8         <NA>  0.45355501       NA
9       answer  0.01787330        2
10   no answer -0.07629330        1
11    whatever  0.83109679        3
12        <NA> -0.06937357       NA

Преимущество этого метода в том, что вы сохраняете исходную информацию без изменений.Если вы хотите удалить значения Na в кадре данных, используйте na.omit.NB: это удалит не только значения NA в df $ Disposition, но и любую строку с NA в любом столбце:

df_clean <- na.omit(df)
df_clean

   Disposition    Anything Analysis
1       answer  2.5472195        2
2    no answer  1.0740980        1
3     whatever  0.6048274        3
5       answer  0.3179986        2
6    no answer -1.1755824        1
7     whatever  0.9420611        3
9       answer  0.0178733        2
10   no answer -0.0762933        1
11    whatever  0.8310968        3
0 голосов
/ 11 мая 2018

Во-первых: Вы должны всегда предоставить репрезентативные данные выборки; если ваши данные носят конфиденциальный характер, предоставьте макетные данные.

Кроме того, чтобы перекодировать вектор character в numeric, вы можете преобразовать в factor и затем использовать as.numeric. Например:

# Sample data
column <- c("Not Answered", "Answered", "Something else", "Others")

# Convert character vector to factor
column <- factor(column, levels = as.character(unique(column)))

# Convert to numeric
as.numeric(column);
#[1] 1 2 3 4

Нумерацию можно изменить, изменив порядок коэффициента levels.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...