Замена значений с помощью условного

У меня есть набор точек данных, относящихся к различным исследованиям (представленных в строках), со столбцами, содержащими информацию о стране, количестве участников и т. д.

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

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

например в приведенном ниже примере я ожидал, что значения «Австралия» будут заменены на «Австралия», но, похоже, ничего не произошло.

Это действительно базовая функция, но я не могу в жизни понять, почему она не работает - я бы очень приветствовал любые предложения относительно того, где я ошибаюсь.

Я посмотрел в Интернете и не могу найти ответы на этот вопрос.

Вот мой код ниже — набор данных называется studies; исходная переменная называется Country; новая переменная называется country_mod.

#Create new, modified variable for country
studies$country_mod <- studies$Country

#Check what the different levels are

levels(studies$country_mod)

 'Australia' 'Australia ' 'Belgium' 'Canada' 'Denmark' 'Estonia' 'Finland' 'France' 'Germany' 'Greece' 'Hong Kong' 'Hungary' 'Ireland' 'Israel' 'Italy' 'Japan' 'multiple' 'Netherlands' 'New Zealand' 'Norway' 'Poland' 'Portugal' 'Scotland' 'South Korea' 'Spain' 'Spain ' 'Sweden' 'Switzerland' 'Taiwan' 'UK' 'United Kingdom' 'United States' 'United States (Puerto Rico)' 'Uruguay' 'US Virgin Islands' 'USA' 'USA - Puerto Rico' 

# Duplicate values for Australia - one has a space in it. Let's recode it.

studies$country_mod[studies$country_mod= = "Australia "] <- "Australia"

levels(studies$country_mod)

 'Australia' 'Australia ' 'Belgium' 'Canada' 'Denmark' 'Estonia' 'Finland' 'France' 'Germany' 'Greece' 'Hong Kong' 'Hungary' 'Ireland' 'Israel' 'Italy' 'Japan' 'multiple' 'Netherlands' 'New Zealand' 'Norway' 'Poland' 'Portugal' 'Scotland' 'South Korea' 'Spain' 'Spain ' 'Sweden' 'Switzerland' 'Taiwan' 'UK' 'United Kingdom' 'United States' 'United States (Puerto Rico)' 'Uruguay' 'US Virgin Islands' 'USA' 'USA - Puerto Rico'

Для удаления пробелов может быть полезно использовать функцию trimws.

C. Braun 10.04.2019 19:25
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

TLDR, перекодировка сработала, однако не меняет "Уровни" вашего фактора "Country_mod". Если вы вызовете table(studies$Country_mod), вы увидите таблицу с именами, представляющими значения, которые могут быть получены (все уровни фактора) наблюдениями в Country_mod, связанными с числовым значением, указывающим, сколько строк фактически приняло это значение. Таким образом, ваш пример покажет 0 под "Australia " после вашего перекодирования. Точно так же levels(studies$Country_mod) по-прежнему будет печатать все исторические «уровни» фактора, независимо от того, принимают ли в настоящее время это значение какие-либо фактические наблюдения. Если, когда вы закончите очистку записей Country_mod, вы используете функцию levels() для изменения уровней, которые может принимать ваш фактор, то вы достигнете того, что, как я полагаю, вы ожидаете, будет результатом вашей процедуры перекодирования.

Другие вопросы по теме