Переименование столбца с использованием имени, которое включает символ новой строки / возврат каретки - PullRequest
0 голосов
/ 05 февраля 2020

Я импортировал данные ответов на опрос, и переменные необходимо переименовать, поскольку они слишком длинные и громоздкие для анализа. Поскольку существует 140 переменных, я использовал функцию переименования в пакете plyr, которая работает для всех из них, кроме одной.

SPPS_Responses <- rename(SPPS_Responses, c("Q7.1. Central Policy\r\n\r\nActive Ageing & Disability Policy\r\n\r\nGender & LGBT Policy\r\n\r\nPfG Co-ordination\r\n\r\nPoverty, Child Poverty Policy/Anti-Poverty Policy\r\n\r\nProfessional Services Unit (Analytical Services Unit/Economics Branch)\r\n\r\nStrategic Policy & Planning, and Equality\r\n\r\n "="Q1: Group"))

Когда я запускаю приведенный выше код, я получаю следующую ошибку:

The following `from` values were not present in `x`: Q7.1. Central Policy

Active Ageing & Disability Policy

Gender & LGBT Policy

PfG Co-ordination

Poverty, Child Poverty Policy/Anti-Poverty Policy

Professional Services Unit (Analytical Services Unit/Economics Branch)

Strategic Policy & Planning, and Equality


>names(SPPS_Responses)

То есть он говорит, что не может найти переменную, но я скопировал имя из функции names (), а другие переменные содержат символы новой строки и все еще были переименованы в великие. Единственная разница между проблемной переменной и другими с символами новой строки заключается в том, что в конце после последнего символа новой строки есть пробел. Функция names () показала, что она вызывается:

 [20] "Q7.1. Central Policy\r\n\r\nActive Ageing & Disability Policy\r\n\r\nGender & LGBT Policy\r\n\r\nPfG Co-ordination\r\n\r\nPoverty, Child Poverty Policy/Anti-Poverty Policy\r\n\r\nProfessional Services Unit (Analytical Services Unit/Economics Branch)\r\n\r\nStrategic Policy & Planning, and Equality\r\n\r\n "
 [21] "Q7.2. Financial Management\r\n\r\nBusiness Partners\r\n\r\nDepartmental Resource Accounts & Financial Systems\r\n\r\nFinance Change\r\n\r\nFinance Review\r\n\r\nFinancial Planning\r\n\r\nInternal Client Services\r\n\r\nWH & SP Accounts and Treasury Management\r\n\r\n\r\n" 

Что не так, что я не вижу? Единственный другой вариант, о котором я могу подумать, - это переименовать этот конкретный столбец, используя позицию, но я хотел бы знать, есть ли лучший вариант, когда позиции столбцов перемещаются при следующем экспорте данных из инструмента опроса.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

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

library(janitor)
SPPS_Responses <- clean_names(SPPS_Responses)
SPPS_Responses <- rename(SPPS_Responses, c("q7_1_central_policy_active_ageing_disability_policy_gender_lgbt_policy_pf_g_co_ordination_poverty_child_poverty_policy_anti_poverty_policy_professional_services_unit_analytical_services_unit_economics_branch_strategic_policy_planning_and_equality"="Q3 CP"))
0 голосов
/ 05 февраля 2020

1.Создать минимальный воспроизводимый пример

df <- data.frame(a = 1:5,
                 b = 5:9,
                 c = "a")
names(df) <- c("Q7.1. Bar Foo\r\n\r\nFoo",
               "Q7.2. Foo\r\n\r\nBar",
               "Q7.3. Foo Foo\r\n\r\nFoo")

2a. Переименовать, используя make.names:

orig_names <- names(df)
new_names <- make.names(names(df))

2b. Переименовать, используя gsub и make.names. Использование 'gsub', чтобы избавиться от всех не буквенных или цифровых символов, и использование make.names, чтобы убедиться, что каждое имя по-прежнему уникально:

orig_names <- names(df)
new_names <- make.names(gsub("[^A-z0-9]", "", orig_names))

2 c. Переименуйте, используя gsub и make.names и substr чтобы убедиться, что имена не длиннее заданной длины:

orig_names <- names(df)
new_names <- sapply(make.names(gsub("[^A-z0-9]", "", orig_names)), substr, 1,5,  USE.NAMES = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...