Пакет Hadley Wickham's haven
, примененный к файлу Stata, возвращает кусочек со многими столбцами типа «помечено». Вы можете увидеть их с ул(), например:R: Извлечение атрибута меток из «помеченных» столбцов столбцов из импорта гаваней из Stata
$ MSACMSZ :Class 'labelled' atomic [1:8491861] NA NA NA NA NA NA NA NA NA NA ...
.. ..- attr(*, "label")= chr "metropolitan area size (cmsa/msa)"
.. ..- attr(*, "labels")= Named int [1:7] 0 1 2 3 4 5 6
.. .. ..- attr(*, "names")= chr [1:7] "not identified or nonmetropolitan" "100,000 - 249,999" "250,000 - 499,999" "500,000 - 999,999" ...
Было бы хорошо, если бы я мог просто извлечь все эти меченые векторы к факторам, но я сравнил длину этикетки атрибут к числу уникальных значений в каждом векторе, а иногда и длиннее, а иногда и короче. Поэтому я думаю, что мне нужно посмотреть на всех из них и решить, как обращаться с ними по отдельности.
Поэтому я хотел бы извлечь значения атрибута меток в список. Однако эта функция:
labels93 <- lapply(cps_00093.df, function(x){attr(X, which="labels", exact=TRUE)})
возвращает NULL для всех переменных.
Является ли это проблемой для фотоэлементов и данных? Как извлечь эти атрибуты из столбцов столбцов в список?
Обратите внимание, что вектор меток назван, и мне нужны как метки, так и имена.
По запросу @ Hack-R здесь крошечный фрагмент моих данных, преобразованный dput (который я никогда раньше не использовал). Я применил этот код:
filter(cps_00093.df, YEAR==2015) %>%
sample_n(10) %>%
select(HHTENURE, HHINTYPE) -> tiny
dput(tiny, file = "tiny")
для создания файла крошечный. Привет! Это было легко! Я думал, что это будет трудно отломиться от этой маленькой части.
Открытие крошечное с Notepad ++, это то, что я нашел:
structure(list(HHTENURE = structure(c(2L, 1L, 1L, 2L, 1L, 1L,
1L, 2L, 1L, 1L), labels = structure(c(0L, 1L, 2L, 3L, 6L, 7L), .Names = c("niu",
"owned or being bought", "rented for cash", "occupied without payment of cash rent",
"refused", "don't know")), class = "labelled"), HHINTYPE = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), labels = structure(1:3, .Names = c("interview",
"type a non-interview", "type b/c non-interview")), class = "labelled")), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"), .Names = c("HHTENURE",
"HHINTYPE"))
Я подозреваю, что это можно было бы сделать более удобным для чтения с небольшим интервалом, но я не хочу портить с ним, опасаясь случайного уничтожения соответствующих Информация.
Мог бы вы 'dput()' минимального количество данных, необходимое для воспроизводимого примера, который инкапсулирует эту проблему? –
См. '? Haven :: labelled'; они имеют свой собственный метод 'as_factor'. – alistaire
Спасибо за подсказку, @alistaire! К сожалению, относительная длина числа уникальных значений в части данных каждого столбца и вектора меток находится по всей карте. Для большинства столбцов нет ни одного совпадения, ни пары ошибок. Поэтому я не готов доверять конверсии одного размера, пока я не посмотрю более внимательно на данные и не выясню, что происходит. – andrewH