Используя R, как мне изменить данные в столбце с буквы на слово - PullRequest
0 голосов
/ 15 ноября 2018

В моей электронной таблице есть столбец с именем CourseType, а значение в столбце равно O, OS или C. Я хочу изменить буквы на «Online», «Onsite».

Как бы я это сделал, используя R?

Спасибо Пол

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Если вы хотите избежать ifelse каскадов (например, в случае множества различных кодов), вы можете использовать этот подход:

# Construct example data
df <- data.frame(CourseType = c("C", "O", "O", "OS", "OS", "C"), teacher = c("Joe", "Jane"), stringsAsFactors = FALSE)
df
#   CourseType teacher
# 1          C     Joe
# 2          O    Jane
# 3          O     Joe
# 4         OS    Jane
# 5         OS     Joe
# 6          C    Jane

# Do recode by filtering the lines
df$CourseType[df$CourseType == "O"]  <- "Online"
df$CourseType[df$CourseType == "OS"] <- "OnSite"

df
#    CourseType teacher
# 1          C     Joe
# 2     Online    Jane
# 3     Online     Joe
# 4     OnSite    Jane
# 5     OnSite     Joe
# 6          C    Jane

# Note: The non-matching CourseTypes are left unchanged!

Один недостаток состоит в том, что у вас нет детали else, в которой вы можете установить значения без перекодирования в значение по умолчанию ... Поэтому лучшим подходом было бы "обогатить" data.frame, добавив перекодированное значение в новый столбец:

df$CourseTypeRecoded[df$CourseType == "O"]  <- "Online"
df$CourseTypeRecoded[df$CourseType == "OS"] <- "OnSite"

df
#   CourseType teacher CourseTypeRecoded
# 1          C     Joe              <NA>
# 2          O    Jane            Online
# 3          O     Joe            Online
# 4         OS    Jane            OnSite
# 5         OS     Joe            OnSite
# 6          C    Jane              <NA>

Затем можно установить значения NA (которые указывают на ошибку перекодирования) на значение по умолчанию, e. г.

df$CourseTypeRecoded[is.na(df$CourseTypeRecoded)] <- "(invalid code)"
0 голосов
/ 15 ноября 2018

Предполагая, что датафрейм называется df, а столбец - CourseType, вы можете использовать оператор ifelse, если варианты для замены ограничены.Это похоже на вложенный IF-ELSE в Excel:

df$CourseType_new <- ifelse(df$CourseType == "O", "Online", 
                     ifelse(df$CourseType == "OS", "OnSite", "something else"))

Если у вас есть больше значений, я бы предложил использовать справочную таблицу

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