В табеле р что это: УСЛОВНЫЕ ОБОЗНАЧЕНИЯ / КонсультантПлюс

Содержание

УСЛОВНЫЕ ОБОЗНАЧЕНИЯ / КонсультантПлюс

УСЛОВНЫЕ ОБОЗНАЧЕНИЯ

┌────────────────┐

│ Код │

├───────┬────────┤

│буквен-│цифровой│

│ный │ │

├───────┼────────┤

Продолжительность работы в дневное время │ Я │ 01 │

│ │ │

Продолжительность работы в ночное время │ Н │ 02 │

│ │ │

Продолжительность работы в выходные и │ │ │

нерабочие праздничные дни │ РВ │ 03 │

│ │ │

Продолжительность сверхурочной работы │ С │ 04 │

│ │ │

Продолжительность работы вахтовым методом │ ВМ │ 05 │

│ │ │

Служебная командировка │ К │ 06 │

│ │ │

Повышение квалификации с отрывом от работы │ ПК │ 07 │

│ │ │

Повышение квалификации с отрывом от работы в │ │ │

другой местности │ ПМ │ 08 │

│ │ │

Ежегодный основной оплачиваемый отпуск │ ОТ │ 09 │

│ │ │

Ежегодный дополнительный оплачиваемый отпуск │ ОД │ 10 │

│ │ │

Дополнительный отпуск в связи с обучением с │ │ │

сохранением среднего заработка работникам, │ │ │

совмещающим работу с обучением │ У │ 11 │

│ │ │

Сокращенная продолжительность рабочего │ │ │

времени для обучающихся без отрыва от │ │ │

производства с частичным сохранением │ │ │

заработной платы │ УВ │ 12 │

│ │ │

Дополнительный отпуск в связи с обучением │ │ │

без сохранения заработной платы │ УД │ 13 │

│ │ │

Отпуск по беременности и родам (отпуск в связи │ │ │

с усыновлением новорожденного ребенка) │ Р │ 14 │

│ │ │

Отпуск по уходу за ребенком до достижения им │ │ │

возраста трех лет │ ОЖ │ 15 │

│ │ │

Отпуск без сохранения заработной платы, │ │ │

предоставляемый работнику по разрешению │ │ │

работодателя │ ДО │ 16 │

│ │ │

Отпуск без сохранения заработной платы при │ │ │

условиях, предусмотренных действующим │ │ │

законодательством Российской Федерации │ ОЗ │ 17 │

│ │ │

Ежегодный дополнительный отпуск без сохранения │ │ │

заработной платы │ ДБ │ 18 │

│ │ │

Временная нетрудоспособность (кроме случаев, │ │ │

предусмотренных кодом «Т») с назначением │ │ │

пособия согласно законодательству │ Б │ 19 │

│ │ │

Временная нетрудоспособность без назначения │ │ │

пособия в случаях, предусмотренных │ │ │

законодательством │ Т │ 20 │

│ │ │

Сокращенная продолжительность рабочего времени │ │ │

против нормальной продолжительности рабочего │ │ │

дня в случаях, предусмотренных │ │ │

законодательством │ ЛЧ │ 21 │

│ │ │

Время вынужденного прогула в случае признания │ │ │

увольнения, перевода на другую работу или │ │ │

отстранения от работы незаконными с │ │ │

восстановлением на прежней работе │ ПВ │ 22 │

│ │ │

Невыходы на время исполнения государственных │ │ │

или общественных обязанностей согласно │ │ │

законодательству │ Г │ 23 │

│ │ │

Прогулы (отсутствие на рабочем месте без │ │ │

уважительных причин в течение времени, │ │ │

установленного законодательством) │ ПР │ 24 │

│ │ │

Продолжительность работы в режиме неполного │ │ │

рабочего времени по инициативе работодателя │ │ │

в случаях, предусмотренных законодательством │ НС │ 25 │

│ │ │

Выходные дни (еженедельный отпуск) и нерабочие │ │ │

праздничные дни │ В │ 26 │

│ │ │

Дополнительные выходные дни (оплачиваемые) │ ОВ │ 27 │

│ │ │

Дополнительные выходные дни (без сохранения │ │ │

заработной платы) │ НВ │ 28 │

│ │ │

Забастовка (при условиях и в порядке, │ │ │

предусмотренных законом) │ ЗБ │ 29 │

│ │ │

Неявки по невыясненным причинам (до выяснения │ │ │

обстоятельств) │ НН │ 30 │

│ │ │

Время простоя по вине работодателя │ РП │ 31 │

│ │ │

Время простоя по причинам, не зависящим от │ │ │

работодателя и работника │ НП │ 32 │

│ │ │

Время простоя по вине работника │ ВП │ 33 │

│ │ │

Отстранение от работы (недопущение к работе) │ │ │

с оплатой (пособием) в соответствии с │ │ │

законодательством │ НО │ 34 │

│ │ │

Отстранение от работы (недопущение к работе) │ │ │

по причинам, предусмотренным законодательством, │ │ │

без начисления заработной платы │ НБ │ 35 │

│ │ │

Время приостановки работы в случае задержки │ │ │

выплаты заработной платы │ НЗ │ 36 │

└───────┴────────┘

2-я страница формы N Т-12

Кадровый портал — Error

Организация работы и кадровые вопросы в связи с коронавирусомОбразцы основных документов в связи с коронавирусомНерабочие дни в связи с коронавирусом

Образцы заполнения кадровых документовФормы первичных учетных документовСведения о трудовой деятельности (электронная трудовая книжка)Ведение трудовых книжек в бумажном виде

Специальная оценка условий трудаНесчастный случай на производствеОбязательные медосмотры (профосмотры)Инструктажи по охране труда

Обязательные документы при проверкахКалендарь кадровика

Хранение и использование персональных данныхМеры по защите персональных данных работниковОтветственность за нарушения законодательства о персональных данных

Привлечение иностранцевОформление иностранцев

Оформление приема на работуТрудовой договор

График отпусковЗамена отпуска денежной компенсациейОформление ежегодного оплачиваемого отпускаОтпуск по беременности и родамОтпуск по уходу за ребенкомЛьготный (дополнительный) отпуск

График работыПривлечение, оформление и оплатаУчет рабочего времениВыходные и праздничные дни

Правила внутреннего трудового распорядка (ПВТР)Дисциплинарные взысканияПорядок увольнения за нарушение трудовой дисциплины

Заработная платаРайонные коэффициенты и надбавкиМатериальная ответственность работника

Оплата больничного листа (не пилотный проект)Оплата больничного листа (пилотный проект)Заполнение больничного листа работодателемРабота с электронными больничнымиПособие по беременности и родам

Порядок проведения аттестацииОграничения на увольнение из-за непрохождения аттестацииРасходы на подготовку и переподготовку кадров

Основания для увольненияПроцедура увольнения по сокращению

Перейти в telegram-чат

Кадровый портал — Error

Организация работы и кадровые вопросы в связи с коронавирусомОбразцы основных документов в связи с коронавирусомНерабочие дни в связи с коронавирусом

Образцы заполнения кадровых документовФормы первичных учетных документовСведения о трудовой деятельности (электронная трудовая книжка)Ведение трудовых книжек в бумажном виде

Специальная оценка условий трудаНесчастный случай на производствеОбязательные медосмотры (профосмотры)Инструктажи по охране труда

Обязательные документы при проверкахКалендарь кадровика

Хранение и использование персональных данныхМеры по защите персональных данных работниковОтветственность за нарушения законодательства о персональных данных

Привлечение иностранцевОформление иностранцев

Оформление приема на работуТрудовой договор

График отпусковЗамена отпуска денежной компенсациейОформление ежегодного оплачиваемого отпускаОтпуск по беременности и родамОтпуск по уходу за ребенкомЛьготный (дополнительный) отпуск

График работыПривлечение, оформление и оплатаУчет рабочего времениВыходные и праздничные дни

Правила внутреннего трудового распорядка (ПВТР)Дисциплинарные взысканияПорядок увольнения за нарушение трудовой дисциплины

Заработная платаРайонные коэффициенты и надбавкиМатериальная ответственность работника

Оплата больничного листа (не пилотный проект)Оплата больничного листа (пилотный проект)Заполнение больничного листа работодателемРабота с электронными больничнымиПособие по беременности и родам

Порядок проведения аттестацииОграничения на увольнение из-за непрохождения аттестацииРасходы на подготовку и переподготовку кадров

Основания для увольненияПроцедура увольнения по сокращению

Перейти в telegram-чат

табель учета рабочего времени

УСЛОВНЫЕ ОБОЗНАЧЕНИЯ
ВИДОВ ЗАТРАТ РАБОЧЕГО ВРЕМЕНИ ДЛЯ
ВОЗМОЖНОГО ИСПОЛЬЗОВАНИЯ В ТАБЕЛЯХ УЧЕТА ИСПОЛЬЗОВАНИЯ
РАБОЧЕГО ВРЕМЕНИ

Код Наименование вида затрат рабочего времени
Я Дни (часы) работы
Н Ночные часы работы
РП Часы работы в государственные праздники, праздничные (нерабочие) и выходные дни
С Сверхурочные часы работы
К Служебные командировки
СХ Временное отвлечение на сельскохозяйственные работы
О Трудовой отпуск
ДПО Дополнительный поощрительный отпуск
У Отпуска в связи с обучением с сохранением заработной платы, повышением квалификации с отрывом от производства и другие
УД Сокращенная продолжительность рабочего времени для обучающихся без отрыва от производства
УБЗ Отпуска в связи с обучением без сохранения заработной платы
Р Отпуска по беременности и родам
ОЖ Дополнительный отпуск, предоставляемый по уходу за ребенком до достижения им возраста трех лет
Г Дни неявок работников, освобожденных временно от работы в связи с выполнением государственных или общественных обязанностей, в случаях, предусмотренных законодательством
ГП Допризывная подготовка
ГЧ Военно-учебные сборы
МО Неявки на работу в связи с нахождением в медицинских учреждениях на обследовании или осмотре работника, обязанного проходить такие обследования
Д Дни неявок на работу работников, являющихся донорами, для обследования и сдачи крови и ее компонентов, дополнительный день отдыха, предоставляемый после этого или используемый в другое время
ЛО Социальный отпуск с сохранением заработной платы для лечения и иных личных потребностей работника

Кратковременные отпуска без сохранения заработной платы, которые наниматель обязан предоставить работнику
ДО
ТВО Творческий отпуск с сохранением заработной платы
ГБ Дни неявок работников, отвлеченных на устранение последствий стихийных бедствий
ДМ Свободный от работы день матерям, воспитывающим ребенка-инвалида в возрасте до восемнадцати лет или воспитывающим двоих и более детей в возрасте до шестнадцати лет, одиноким матерям, воспитывающим двоих и более детей в возрасте до шестнадцати лет
ГС Дни неявок на работу работников, находящихся под следствием до решения суда
ОТ Дополнительные свободные от работы дни, предусмотренные коллективным договором сверх установленных законодательством Республики Беларусь
Б Временная нетрудоспособность (кроме случаев, предусмотренных кодами Т и Х) и отпуска по уходу за больными и по карантину, оформленные листками нетрудоспособности
Т Неоплачиваемая нетрудоспособность в случаях, предусмотренных
законодательством Республики Беларусь
Х Неявки на работу в связи с карантином или уходом за больными,
оформленные справками лечебных учреждений
А Отпуска без сохранения заработной платы по семейно-бытовым и другим уважительным причинам, предоставляемые по договоренности между работником и нанимателем
ОА Отпуска, предоставляемые по инициативе нанимателя
ОАД Неотработанные рабочие дни при временном переводе работников по инициативе нанимателя на работу с неполной рабочей неделей
П Целодневные (целосменные) простои
ВП Внутрисменные простои
ПР Прогулы и другие неявки без уважительной причины
З Неявки из-за забастовок
ОП Опоздания
УХ Преждевременный уход с работы
НН Неявки по невыясненным причинам (до выяснения обстоятельств)
В Государственные праздники, праздничные (нерабочие) дни и выходные дни (дни еженедельного отдыха)

Работники на неполной ставке: оформление, зарплата, риски

Что такое неполная рабочая ставка

Когда работника берут в штат, ему устанавливают рабочее время. Это количество часов и режим работы. 

Нормальное рабочее время — 40 часов в неделю по ст. 91 ТК РФ. Это всем знакомые пятидневка в офисе или скользящий график смен в общепите и торговле.

Рекламная компания взяла в штат иллюстратора. Он рисует в офисе с понедельника по пятницу с 9 до 18 часов. Это нормальное рабочее время.

Неполная рабочая ставка — когда сотрудник работает меньше 40 часов в неделю по ст. 93 ТК РФ. Рабочие часы можно урезать как надо. Тогда получаются:

  • неполный рабочий день,
  • неполная смена,
  • неполная неделя,
  • разделение рабочего дня на части.

Иллюстратора нет смысла звать на целый день. Работнику сделали время работы в офисе с 9 до 13 часов. Это неполное рабочее время.

За отработанными часами следит работодатель. Часы записывают в табель учёта рабочего времени. Потом по табелю начисляют зарплату.

Статья: как заполнить табель учёта рабочего времени

Рабочее время сокращают по просьбе работника, по соглашению или приказом по фирме. Просто так урезать время нельзя. Для каждого основания есть жизненные причины. О них расскажем дальше.

Зарплата и бонусы работника на неполной ставке

Зарплату на неполной ставке урезают пропорционально времени. 

Ценник иллюстратора в 70 000 ₽ с половиной ставки уменьшают до 35 000 ₽. 

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

Остальные бонусы работы по найму остаются как при полной ставке. 

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

Работнику на неполной ставке полагается даже перерыв на обед не меньше 30 минут. Об этом напоминал Минтруд в Письме № 14-2/В-1012. Кроме смен короче 4 часов — тут можно без обеда.

🎁

Новым ИП — год Эльбы в подарок

Год онлайн-бухгалтерии на тарифе Премиум для ИП младше 3 месяцев

Попробовать бесплатно

Когда работодатель обязан установить неполную ставку

Семейные обязанности

Для работников с детьми или пожилыми родственниками 40 часов в неделю — слишком много. Неважно кто это: мужчина или женщина.

Работодатель обязан сократить рабочее время, даже если это неудобно бизнесу:

  • беременной;
  • родителю или опекуну ребёнка до 14 лет;
  • родителю или опекуну ребёнка-инвалида до 18 лет;
  • человеку, ухаживающему за больным родственником со справкой МСЭ.

Если у работника оформлен декрет на уход за ребёнком, за ним сохраняется пособие от соцстраха по ст. 256 ТК РФ. Главное, не навести подозрение о липовой сокращённой ставке — об этом скажем в разделе о рисках.

Работодатель может проверить, действительно ли в семье работника больше некому заниматься ребёнком. Для этого просят справку о режиме работы второго родителя. Это рекомендация Минтруда из Письма № 14-2/В-1012. Если выяснится, что второй родитель не работает, в сокращении дня отказывают.

О режиме работы договариваются. Но в законе нет рамок, на сколько часов урезают неделю и как сдвигать рабочий день. Бывает, человек приходит на пару часов в день, а бывает, сокращают только тридцать минут вечером. 

Трудовой кодекс советует договариваться так: работнику удобно и бизнес не страдает.

В реальной жизни часто работник и работодатель не могут договориться. Например, у женщины ребёнок в яслях до обеда, но работодателю удобнее сделать нерабочую среду, а остальные дни оставить полными.

!

Важно: именно работодателю попадёт, если работнику не подберут удобный график. Всё-таки последнее слово за руководством, а работник зависим от зарплаты. 

Роструд советует работникам жаловаться на работодателей в трудовую инспекцию своего города. По таким жалобам приходят инспекторы и штрафуют. Но график за вас всё равно никто не составит.

Для перевода работника на неполное время возьмите с него заявление, договоритесь о режиме работы и подпишите дополнительное соглашение к трудовому договору.

Образец заявления работника о переводе на неполное рабочее время

Образец дополнительного соглашения о неполном рабочем времени

Несовершеннолетние и инвалиды

Ещё есть работники, которым по возрасту и здоровью положено работать меньше. Количество часов для них прописано в ст. 92 ТК РФ:

  • работники до 16 лет — не больше 24 часов в неделю,
  • работники от 16 до 18 лет и инвалиды — не больше 35 часов в неделю,
  • работники на опасном производстве — не больше 36 часов в неделю.

Если несовершеннолетний учится, неделю сокращают ёще надвое — до 12 и 17,5 часов. Так что внимательнее с вундеркиндами 😉 За полный день инспекция выпишет штраф.

Конкретную продолжительность недели и режим работы записывают в трудовой договор.

Образец трудового договора

Когда работодатель устанавливает неполную ставку по своей потребности

Есть два случая, когда работнику сокращают время по желанию работодателя. Это добровольное соглашение и изменения в бизнесе.

🚀

Курс молодого ИП

11 видеоуроков для уверенного старта бизнеса

Начать обучение

Соглашение с работником

Иногда желания работодателя и работника совпадают. Предпринимателю нужен специалист в штат без загрузки на фултайм. Сотрудник тоже ищет подработку. Тогда сокращённое время устанавливают соглашением сторон.

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

Изменения в бизнесе

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

Предприниматель переехал из торгового центра в онлайн-продажи. Теперь ему не нужен продавец за прилавком на восемь часов. Достаточно трёх часов в день, чтобы обработать заявки покупателей.

Если работы не хватает, предприниматель может сократить рабочее время на шесть месяцев по ст. 74 ТК РФ. Дальше придётся либо загружать новыми задачами, либо сокращать.

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

Образец приказа о режиме неполного времени на 6 месяцев

Образец уведомления о введении неполного времени 

Риски работодателя при неполной ставке

Работодатели не должны злоупотреблять неполной ставкой. За этим следят контролирующие органы, и мы в шоке, как их много 😱 Вот известные проблемы предпринимателей.

Налоговая заинтересуется 

Налоговая ищет компании, которых подозревает в недоплате налогов. Таких включают в план, потом приходят с выездной проверкой, проверяют документы и доначисляют налоги. 

Инспекторы выбирают компании для проверок по критериям из Приказа от 30.05.2007 № ММ-3-06/333@. 

Один из критериев риска — заниженная зарплата работника. На неполной ставке человек получает меньше обычного. Инспекторы заподозрят серую зарплату и уход от налогов. Это повод для проверки. 

Статья: критерии налогового риска

Работник взыщет зарплату, если на деле работал полный день

Если работодатель ввёл неполное время, стоит следить, чтобы работники фактически работали меньше. 

В организации ввели четырехчасовой рабочий день. Зарплату сократили надвое. Но оказалось, что бухгалтера не успевают сделать весь объём за полдня. Поэтому приходилось работать полные восемь часов. 

Когда одну из бухгалтеров сократили, она отсудила вторую половину зарплаты. Организация потеряла 69 600 ₽, которые хотела сэкономить, и плюсом 25 000 ₽ на компенсации морального вреда. 

Дело № 33-2970/2019

Соцстрах заберёт декретное пособие, если догадается о фиктивной неполной ставке

Когда у работника неполный день в декрете, ему сохраняют пособие. Пособие восполняет зарплату. 

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

В компании женщины выходили на работу до конца декрета. Руководство сокращало рабочий день на час. Женщины продолжали получать пособия. 

Во время плановой выездной проверки ревизоры углядели фиктивное сокращение рабочего дня. Выяснили, что зарплата женщин не уменьшалась. Теперь компания вернёт фонду 2 156 057 ₽ за три года.

Дело № А45-34358/2018

Работник отсудит моральный вред, если не договориться о графике

Семейных работников переводят на неполное время. График предлагает работник. Предприниматель корректирует график, только когда это вредит бизнесу. Например, продавец хочет работать по три часа, но в середине дня неудобно передавать кассу и товар сменщице.

Если найти удобный график не получилось, обвинят работодателя. Мы это уже говорили.

Мужчина оформил декретный отпуск. Потом решил выйти на работу и попросил 39 часов в неделю. Видимо, развязалась война и руководство предложило наоборот, выходить ежедневно только на час. Оба оказались в суде. 

Суд сказал, что руководство злоупотребляет. Если человек желает работать, ему надо дать 20-24 часа в неделю и в удобное время. Это нужно, чтобы хватало и зарплаты, и времени на семью. 

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

Дело № 33-5580/2

Инспекция труда оштрафует

За соблюдением прав работника следит инспекция труда. 

Если работник пожалуется на липовый сокращённый день или отказ утвердить удобный график, инспектора придут с проверкой. Заодно проверят всё связанное с рабочим временем, перерывом на обед, переработками и сменами в праздники.

За каждое нарушения штрафуют по ст. 5.27 КоАП РФ. 

Штрафы: 

👮‍♀️ для ИП от 1000 до 5000 ₽,

👮‍♀️ для ООО от 30 000 до 50 000 ₽,

👮‍♀️ плюсом к штрафу для ООО допштраф для директора от 1000 до 5000 ₽.

При повторном нарушении штрафы возрастут.

Статья актуальна на 

Условные обозначения — кодировки неявок сотрудников в табеле учета рабочего времени — Кадры — Кадры

Ежегодный дополнительный отпуск без сохранения заработной платы                                                                             ДБ
Временная нетрудоспособность (кроме случаев, предусмотренныхкодом «Т») с назначением пособия согласно законодательству                  Б 
Временная нетрудоспособность без назначения пособия в случаях, предусмотренных законодательством (в связи с бытовой травмой, по уходу за больными и по карантину, оформленные справками лечебных учреждений и т. д.)                  Т 
Сокращенная продолжительность рабочего времени против нормальной продолжительности рабочего дня в случаях, предусмотренных законодательством                   ЛЧ 
Время вынужденного прогула в случае признания увольнения, перевода на другую работу или отстранения от работы незаконными с восстановлением на прежней работе                   ПВ
Невыходы на время исполнения  государственных или общественных обязанностей согласно законодательству                  Г 
Прогулы (отсутствие на рабочем месте без уважительных причин в течение времени, установленного законодательством)                  ПР 
Продолжительность работы в режиме неполного рабочего времени по инициативе работодателя в случаях, предусмотренных законодательством                  НС 
Выходные дни (для еженедельного отдыха) и праздничные дни                   В 
Дополнительные выходные дни (оплачиваемые)                  ОВ
Дополнительные выходные дни (без сохранения заработной платы)                  НВ
Забастовка (при условиях и в порядке, предусмотренных законом)                  ЗБ 
Неявки по невыясненным причинам (до выяснения обстоятельств)                  НН 
Время простоя по вине работодателя                  РП
Время простоя по причинам не зависящим от работодателя и работника                  НП
Отстранение от работы (недопущение к работе) с оплатой (пособием) в соответствии с законодательством                  НО
Отстранение от работы (не допущение к работе) по причинам, предусмотренным законодательством, без начисления заработной платы                  НБ

Помощь по Теле2, тарифы, вопросы

Табель учета рабочего времени является важным документом, поскольку на основании сведений из него производятся расчеты по заработной плате наемных работников. Он может иметь унифицированную форму или быть самостоятельно разработанным. Идентифицирующие определенные факты обозначения в документе зависят от типа используемого бланка. Какие вопросы могут возникнуть при заполнении табели, и какие обозначения необходимо использовать?

Учет рабочего времени

Общая информация

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

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

Табель может быть затребован представителями Налоговой Службы для проверки корректности налоговых начислений и сотрудниками ФСС для контроля правильности размера социальных пособий. Информация с него в виде отчетности подается в Росстат для сбора и формирования статистических сведений. Она может быть интересна работникам трудовой инспекции, в компетентности которых проверка соблюдения прав граждан компании, с которыми оформлены трудовые отношения.

Форма документа

Каждый субъект предпринимательства вправе применять собственный бланк табеля.

При его разработке можно адаптировать под специфику компании унифицированные формы. На титульном листе документа необходимо указать наименование компании и привести буквенно-цифровую систему кодов, идентифицирующих различные обстоятельства. Ежедневный учет рабочего времени проводится в таблице. Третья часть документа предусмотрена только в форме Т-12, что и отличает ее от бланка Т-13. В ней отражаются сведения о заработной плате, итоговая сумма которых определена с учетом применных тарифов и ставок, а также отработанного времени.

Порядок оформления

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

На большом предприятии ответственными за предоставление корректных данных являются руководители структурных подразделений, а обязанность по оформлению документа может быть вменена табельщику. Перед начислением оплаты труда, табель передается в отдел кадров и в бухгалтерию для проведения расчетных операций. После использования документа, он передается для хранения в архив. Правовыми актами регламентировано время хранения 5 лет для обычных предприятий и 75 лет для компаний, на которых труд осуществляется во вредных и опасных условиях.

В обязанности работодателя входит организация учетной деятельности в сфере фиксации и контроля времени работы сотрудников. Для этого используются документы унифицированной формы Т-12 или Т-13. Правовыми актами не запрещено ведение самостоятельно разработанной документации, поэтому ответственное лицо вправе вести учет в том виде, в котором ему это удобно.

Образец заполнения табеля рабочего времени

Для удобства пользования табелем, на его титульном листе должны быть отражены применяемые аббревиатуры и расшифровки к ним. В документе, утвержденном правовыми актами, 36 шифров. При разработке своей формы рекомендуется придерживаться стандартных обозначений, однако допускается от них отклонение. Отработанное время сотрудниками отображается буквенными шифрами:

  • Я – время, соответствующее работе человека в соответствии с рабочим графиком;
  • РВ – деятельность сотрудника в дни, отнесенных к категории нерабочих;
  • С – работа сотрудника в дни рабочего графика, но свыше установленной продолжительности рабочего дня;
  • Н – продолжительность работы в ночной временной промежуток;
  • К – время нахождения человека в командировке, оформленной по приказу руководства.

Федеральный закон № 402-ФЗ от 06.12.2011 в статье 9 предусматривает для коммерческих предприятий свободный выбор форм первичной документации, начиная с 2014 года. Для фиксации действий служащих на рабочем месте используются формы Т-12 и Т-13 (утв. Постановлением Госкомстата РФ № 1 от 05.01.2004).

Согласно статье 91 Трудового кодекса РФ (ч. 3 ст. 91), бюджетная организация обязана фиксировать продолжительность времени труда сотрудников на рабочем месте. Для этого разработана обязательная форма (код по ОКУД 0504421), на основании которой происходит начисление заработной платы. При заполнении нужно использовать условные обозначения в в 2019 году.

Что обозначают сокращения

Код в документе по фиксации продолжительности труда сотрудников на рабочем месте необходим для корректного заполнения регистра. Для этого приняты буквенные обозначения в табеле учета рабочего времени, они указаны в статье, содержащей методические рекомендации к Приказу Минфина России от 30.03.2015 № 52н. Например, обозначение в табеле учета рабочего времени Т-13 для прогула — «П». А буквы «ДО» — это отпуск без сохранения заработной платы. Все условные обозначения табеля мы собрали в таблице.

Коды в табеле учета рабочего времени Т-13 с 2019 годаРасшифровка
АНеявки с разрешения администрации
БВременная нетрудоспособность, нетрудоспособность по беременности и родам
ВВыходные и нерабочие праздничные дни
ГВыполнение государственных обязанностей
КСлужебные командировки
НРабота в ночное время
ООчередные и дополнительные отпуска
ОВДополнительные выходные оплачиваемые дни
ДООТ за свой счет
РР в табеле (расшифровка) — отпуск по беременности и родам
ОЖОО в табеле (расшифровка) — отпуск по уходу за ребенком
ППрогул
СЧасы сверхурочной работы
НННеявки по невыясненным причинам (до выяснения обстоятельств)
ВУВыходные по учебе
ОУУчебный дополнительный отпуск
ПКПовышение квалификации с отрывом от производства
ЗНЗамещение в 1-3 классах
ЗПЗамещение в группах продленного дня
ЗСЗамещение в 4-11 классах
РПРабота в выходные и нерабочие праздничные дни
ФФактически отработанные часы
ЛЧКод для указания часов сокращения труда работникам

Можно ли использовать свои сокращения и расшифровки

Многие специалисты интересуются, можно ли добавить свои коды для табеля учета рабочего времени 2019. При необходимости предприятие вправе самостоятельно дополнить принятые сокращения (согласно статье Приказа Минфина России от 30.03.2015 № 52н).

Например, для обозначения отпускного периода должен быть проставлен код «О» — очередные и дополнительные отпуска или «ОР» — по уходу за ребенком. Для удобства и разграничения видов отпусков специалисты вводят в обозначение «ДО», что означает отпуск за свой счет, в табеле учета рабочего времени обозначение достаточно часто используется. Или «КР» — перерыв на кормление ребенка.

При введении дополнительных значений необходимо издать приказ об утверждении обозначений, закрепив, таким образом, новые коды и их расшифровки движений служащих на рабочем месте в локальных нормативных документах.

Заполняем документ с использованием кодов

В бюджетных организациях применяется только унифицированная форма, утвержденная в статье Приказа Минфина РФ от 30.03.2015 № 52Н. Заполняется форма 0504424 двумя способами:

  1. Методом сплошной регистрации явок и неявок — отмечается каждый трудовой и выходной день в отчетном месяце. Проставляется код и количество отработанных на месте часов.
  2. Методом фиксации отклонений — заносятся только отклонения от установленного режима. Отмечаются неявки, сверхурочные, опоздания, отпуска и т. п. Форма 0504424 предусматривает при заполнении только буквенный код.

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

Заполненная форма 0504421, помимо данных о фактически отработанных на месте часах, предусматривает только буквенные коды (Приказ Минфина России от 30.03.2015 № 52н).

Необходимо помнить основные правила заполнения документа:

  1. Форма 0504424 открывается ежемесячно, за 2-3 дня до начала расчетного периода.
  2. Изменение списочного состава (фамилия, должность, режим работы) вносятся в форму на основании приказов по личному составу.
  3. В форме 0504424 в верхней половине строки регистрируются отклонения от нормального использования рабочего времени. Фиксируются часы, в нижней половине клетки — условные коды отклонений.
  4. В случае если у работника за один рабочий день два вида отклонений, то запись вносится через дробь, где числитель дроби — код, а знаменатель — часы работы. К примеру, код Н/2 означает, что работник отработал ночью 2 часа. В случае более двух отклонений, необходимо ввести дополнительную строчку на этого сотрудника и отразить отклонение в документе.
  5. Если в форме 0504424 внесены ошибочные данные, то оформляется корректирующий документ. Он создается с учетом всех изменений, сроков и в порядке, утвержденным учреждением.
  6. В строке «Вид» указывается: при первичном заполнении — цифровой код «0», при корректировке, начиная с единицы, проставляется код «1», «2» и т. д.

Кто должен вести

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

— это главная составляющая работы любого предприятия. Это позволяет осуществлять контроль работы сотрудников.

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

Цель ведения табеля учета рабочего времени

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

Ведение документа позволяет решить задачи следующего плана:

  1. Контролировать присутствие на рабочем месте всех работников, согласно штатной численности.
  2. Осуществлять проведение дисциплины труда. Это можно легко отследить, ведь возможны опоздания или продолжительные перерывы на рабочих местах.
  3. Для вычисления суммы заработка на период, указанный в табеле.
  4. При подготовке отчетности эти ведомости служат источником необходимой информации.
  5. При наложении административных взысканий на работника, если он не появился на работу своевременно.

Ранее были установлены единые формы документа, но с 2013г. их использование не стало обязательным, хотя многие предприятия предпочитают использовать именно их.

Как работать с табелем

На каждом предприятии для заполнения табеля имеется специально назначенное распорядительным документом лицо. Если организация состоит из нескольких работников, то, как правило, эти функции выполняет секретарь или представитель отдела кадров.

Если же предприятие располагает несколькими объектами, то в каждом подразделении назначается табельщик, а результаты ежемесячного учета рабочего времени обобщаются в расчетном центре.

Важно, чтобы в каждой организации имелся табель учета времени работы, это обязательный порядок. Сам бланк можно либо распечатать, либо заказать централизованно в типографии. Имеются формы Т-12 и Т-13.

Первая учитывает не только рабочее время, но и расчет за месяц. Заполнение производится одинаково, но при этом на начало следующего месяца открывается новый бланк, в котором отражаются следующие сведения:

  • прописывается название организации в соответствии с уставными документами;
  • указываются даты заполнения и порядковый номер;
  • на какой период открывается табель;
  • номера рабочего персонала, согласно записям в их личных карточках.

Остальная информация вносится в течение месяца, когда ведется табельный учет.

Условные обозначения

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

Обозначения в табеле

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

Правила заполнения табеля

Основные правила ведения табеля учета рабочего времени

Заполнение табеля учета рабочего времени — задача непростая, хотя, казалось бы, что здесь ничего сложного нет. Она требует особого внимания и кропотливости. Даже малейшая ошибка может отразиться на начислении заработной платы сотрудника, и начнутся спорные вопросы. Можно ставить по датам явки либо неявки на работу, это самый простой подход.

При этом в каждую клетку вносятся данные о присутствии сотрудников на рабочем месте, либо отсутствии, но с обязательным указанием причины. Указывается и количество рабочего времени, реально отработанного в этот день.

В табеле обозначается буквой «В», а под ней проставляется» 0″. Если день рабочий, то следует обозначить «Я» это явка на работу. Если работник находится в командировке, то нужно поставить букву К.

При расчете рабочего времени не нужно прибегать к сложным формулам, достаточно выполнить простые арифметические действия. Согласно количеству отработанных часов и осуществляется начисление заработной платы.

  1. Документ заполняется каждый день, а по результатам месяца производится начисление заработной платы.
  2. Если имеются изменения в списочном составе, то эти данные вносятся в табель.
  3. В верхней половине строчки прописываются отклонения от нормального режима времени работы, а в нижней — условные обозначения.
  4. Если необходимо в одной клетке выставить одновременно два отклонения, то делается это через дробь.
  5. В случае если в табель занесена ошибка, то необходимо подготовить дополнительный документ со всеми возможными корректировками.
  6. Если табель заполняется первый раз, то ставится «0», а если требуется внести корректировки, то 1 или 2 и далее.

Важные нюансы при заполнении табеля

Не менее важно учитывать методику регистрации отклонений. Обычно это используется при одинаковой продолжительности рабочего времени в течение всего периода.

Для особых случаев применяются такие отклонения, как , сверхурочная работа либо неявки по неизвестным причинам. Этот метод позволяет значительно сэкономить время на расчет, а результат получается точно таким же.

На бумажном варианте это выглядит так:

  1. В верхней строке пишутся условные обозначения, свидетельствующие об отсутствии работника.
  2. Строчка снизу остается незаполненной.

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

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

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

Как ведется электронный табель

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

Создание в программном обеспечении Excel данного табеля — это наилучшее решение. Таблицы позволяют определить вид и размер формата. А задание вычислений в этой программе поможет справиться с подсчетом.

На практике встречаются и такие ситуации, когда у табельщика недостаточно навыков при работе в Excel, но можно подобрать и иную . Можно подготовить компьютерный вариант табеля, дублирующий бумажный. Так время работы с документом сократится.

Каждая лицензированная программа стоит немалых денежных средств, не на всех предприятиях имеются средства на эти приобретения. Тем не менее, они удобны и практичны в работе.

Как хранить документ

Как и сколько хранится табель учета рабочего времени

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

Многие работодатели задаются вопросом, сколько времени нужно хранить табель учета рабочего времени и когда его нужно уничтожать. На основании требований нормативной документации документа необходимо в течение года, поэтому этот срок нарушать нельзя.

Для хранения формы документа на предприятии обычно предусматривается срок 5 лет, а если работы связаны с вредными условиями, то 75 лет хранить обязательно.

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

Уничтожать табель следует в соответствии с действующей инструкцией по делопроизводству, специально разработанной для данного предприятия.

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

Кому нужен табель

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

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

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

Как заполнить табель учета рабочего времени в Excel, узнайте в этом видеоролике:

Форма для приема вопроса, напишите свой

На предприятии все подлежит учету. В том числе, и рабочее время. Именно оно предназначено для выполнения задач, которые выступают смыслом существования организации. Трудовое законодательство обязывает каждого предпринимателя вести четкий учет рабочего времени . О том, как это осуществляется на практике, идет речь ниже.

Необходимость в ведении табеля

Учет отработанного каждым сотрудником времени обеспечивает:

  • контроль трудовой деятельности;
  • соблюдение подчиненными дисциплины;
  • правильность начисления заработка;
  • оперативную информацию о том, какие ресурсы имеются у руководителя на конкретный отрезок времени.

Для того чтобы упростить выполнение перечисленных запросов, в практику внедрена стандартная форма документа, которую называют табелем учета рабочего времени (ТУРВ).

Буквенный и цифровой код в табеле. Основные обозначения

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

  • буквами;
  • цифрами.

Условные обозначения не нужно помнить наизусть. Все они содержатся непосредственно на бланке ТУРВ. Необходимо только проставлять подходящие коды в каждой клеточке напротив фамилии отдельных сотрудников внимательно.

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

Более всего в ходу обозначения ТУРВ, которые касаются непосредственного труда сотрудников на своем рабочем месте:

Продолжительность работы Зашифрованное обозначение
буквы цифры
– в дневное времяЯ01
– в ночное времяН02
– в выходные и нерабочие праздничные дниРП03
– сверхурочнойС04
– вахтовым методомВМ05

Труд днем закодировали буквой Я, что можно расшифровать, как явочное время. Остальные обозначения содержат в себе начальные буквы разновидностей работы. Что касается цифр – то они попросту проставлены по порядку.

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

Расшифровка обозначений разновидностей отпуска

В буквах и цифрах закодированы все варианты отпусков. Они прячутся за цифрами от 09 до 17.

Расшифровать обозначения ежегодных отпусков – основного и дополнительного, – проще всего, поскольку они обозначены как ОТ (09) и ОД (10). Прочие виды отпусков имеют такие коды:

Вид отпуска Зашифрованное обозначение
буквами цифрами
Учебный оплачиваемый, для тех, кто совмещает работу и обучение. Логично, что он обозначается такой буквой (У).

Он относится к дополнительным отпускам

У 11
Учебный неоплачиваемый – также отпуск дополнительный. Чтобы отличить его от предыдущего, в код кроме буквы У вставлена ДУД 13
За свой счет:
– полученный по согласованию с нанимателемДО 16
– предоставленный в предусмотренных законом случаях (недаром код содержит букву З – от слова «закон»)

В ТУРВ также заносят информацию об отпуске по:

  • БиР Р или 14;
  • уходу за крохой до исполнения ей 3 лет ОЖ или 15.

Важно! Когда сотрудник проходит обучение и продолжает трудиться на условиях сокращенного рабочего дня, то его рабочее время отмечается в ТУРВ как УВ или 12.

Особенности использования в табеле кода НН

Среди видов затрат времени значится отсутствие сотрудника по невыясненным причинам или до момента определения всех обстоятельств возможного прогула. Они обозначены как НН или 30. Код проставляют напротив фамилия того сотрудника, который не явился на работу в установленное время. При этом у лица, ответственного за составление ТУРВ нет никаких документов или устной достоверной информации о причинах отсутствия.

Не стоит сразу же ставить в соответствующую клеточку код ПР, который фиксирует прогул. Разумнее дождаться от отсутствующего работника убедительных объяснений или документов, которые докажут, что причина неявки – уважительная.

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

Важно! До выяснения причин отсутствия сотрудника на работе разумнее в ТУРВ обозначить соответствующий день нейтральным кодом НН (30).

Возможные ошибки заполнения ТУРВ

Кроме обычных описок в ТУРВ бывают ошибки действительно значительные.

Пример. Сотрудник предприятия в выходной день посещал ночной клуб и попал в число нарушителей порядка. В результате его задержала полиция, и он содержался под стражей несколько суток. Работник бухгалтерии, отвечающий за ведение ТУРВ, обозначил дни отсутствия сотрудника как ПР – прогул.

В данном случае допущена немаловажная ошибка. Прогул – это отсутствие без какой-либо причины, которую можно идентифицировать как уважительную (Ст. 81 п.6а ТК).

Поэтому более корректно ввести дополнительное обозначение и записать, к примеру, код АА (38) – административный арест. Или обозначить пропущенные дни кодом НБ (35) – безоплатное отсутствие по предусмотренным законодательством причинам.

Нередко при нахождении сотрудника на больничном, в отпуске по БИР, неоплачиваемом отпуске, в табеле проставляются выходные (В) вместо правильных кодов – Б, Р и ДО. Это также является ошибочным.

Несколько вопросов и ответов

Вопрос 1. В чем отличие ф. №Т-12 от ф. Т-13?

Ответ. Выбор применения одной из форм зависит от способа контроля рабочего времени. Когда на предприятии явка сотрудников фиксируется автоматической системой, то удобнее использовать ф. №Т-13. В остальных организациях применяют универсальную ф. Т-12. А еще в ней имеется Р.2, в который можно заносить расчеты по оплате труда сотрудников. Что касается букв табелей, то они идентичны в обеих формах.

Вопрос. 2. На предприятии ТУРВ ведется в электронной форме с использованием стандартных кодов. Нужно ли дополнительно заполнять бумажную ф. № Т-13?

Ответ. При такой организации учета рабочего времени сотрудников необходимо просто заверить табель электронной цифровой подписью – и все.

Вопрос к эксперту

Как в ТУРВ правильно проставлять выходные дни сотруднику, который до их наступления и после находится в командировке?

Ответ. В решении данного вопроса присутствуют две точки зрения:

  1. Проставлять код, обозначающий выходной день, то есть, В или 26.
  2. Записывать К или 06, фиксируя тем самым служебную командировку.

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

Инспектор кадрового отдела Сизова Н. Л.

ТУРВ – немаловажный документ. Ведь с его помощью четко фиксируются все затраты рабочего времени. Документ помогает четко следить за дисциплиной и корректно насчитывать зарплату. ТУРВ наглядно демонстрирует руководителю, насколько эффективно используется труд каждого его сотрудника. Для правильного заполнения в документе имеется подсказка с расшифровкой кодов.

Данные о рабочем времени каждого сотрудника нужны для правильного расчета его среднего заработка. Поэтому работодатель обязан вести учет рабочего времени независимо от применяемой системы оплаты труда.

Работодатель обязан вести учет времени, фактически отработанного каждым работником (ст. 91 ТК РФ).

Организация вправе или вести учет в форме, разработанной самостоятельно и утвержденной руководителем организации, или, как и прежде, использовать унифицированную форму (утв. пост. Госкомстата России от 05.01.2004 N 1). При этом, по нашему мнению, второй вариант проще и удобней. В унифицированной форме предусмотрены все строки и графы, необходимые для правильной организации учета. Остановимся подробнее на порядке ее заполнения.

Форму табеля N Т-12 (рис.1) применяют при ручном учете, N Т-13 (рис. 2) — при автоматизированном. Отметим, что форма N Т-12 состоит из двух разделов: I — «Учет рабочего времени» (продолжение рис. 1) и II — «Расчет с персоналом по оплате труда» (продолжение рис. 1). Первый раздел предназначен непосредственно для учета времени, отработанного сотрудниками, второй — для отражения начисления им заработной платы. При этом организация вправе вести раздельный учет этих данных. В такой ситуации раздел II табеля не заполняют.

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

На титульном листе табеля N Т-12 есть условные обозначения отработанного и неотработанного времени. Они должны использоваться и при заполнении табеля по форме N Т-13 (продолжение рис. 1).

В большинстве случаев табель подается в бухгалтерию один раз в месяц по его окончании. Однако это не совсем верно. Дело в том, что заработная плата должна выдаваться работнику не реже чем каждые полмесяца (аванс и окончательный расчет) (ст. 136 ТК РФ). При этом аванс начисляют исходя из фактически отработанного сотрудником времени, которое отражено в табеле. Получается, что в отношении сотрудников-повременщиков табель нужно оформлять каждые полмесяца. Иначе правильно начислить им аванс бухгалтерия не сможет.

Ведение табеля — обязанность организации. Причем он необходим даже при условии, что в организации применяется сдельная форма оплаты труда. С одной стороны, при применении этой системы заработок сотрудника не зависит от количества отработанного им времени. Он определяется исходя из установленных расценок на выполненный объем работ в натуральных величинах. Однако независимо от системы оплаты труда, установленной в организации, продолжительность рабочего времени ограничена трудовым законодательством. Поэтому работодатель обязан вести его учет. Трудовой кодекс не делает никаких исключений из этого правила (ст. 91 ТК РФ). Кроме того, данные о рабочем времени, затраченном каждым сотрудником организации, нужны для правильного расчета его среднего заработка и формирования статистической отчетности.

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

Их представляют по просьбе работника. Причем перечень этих документов Трудовой кодекс не устанавливает. Табель напрямую связан с работой сотрудника. Следовательно, он вправе требовать его копию.

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

Особенности заполнения табеля в отдельных ситуациях

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

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

Работа сверхурочно

Предположим, табель заполняется методом сплошной регистрации явок и неявок. Сотрудник организации работал сверхурочно (10 часов вместо установленных 8). Какой код за этот день проставлять в табеле: «Я» (продолжительность работы в дневное время) или «С» (продолжительность сверхурочной работы)?

В данном случае в табель может быть введена дополнительная графа. В существующей графе ставят код «Я», в дополнительной — «С». При этом для удобства дальнейших подсчетов нормальную и сверхурочную продолжительность времени целесообразно разделить и указать в соответствующих графах.

В то же время подобной проблемы не возникнет при регистрации в табеле лишь отклонений от нормальной продолжительности рабочего времени.

Работа в день командировки

Сотрудник по договоренности с работодателем может выйти на работу в день возвращения из командировки. Получается, что, с одной стороны, его командировка не закончилась (код по табелю «К»), с другой — он находится уже на рабочем месте (код по табелю «Я»). Отметим, что вопрос о явке сотрудника на работу в день выезда в командировку и в день приезда из командировки решается по договоренности с работодателем. Это предусмотрено Положением об особенностях на правления работников в служебные командировки (утв. пост. Правительства РФ от 13.10.2008 N 749).

Обязанности выходить на рабочее место в день командировки у сотрудника нет. Однако по договоренности с работодателем он может это сделать как на полный день, так и на его часть. В данном случае организация обязана ему оплатить:

День командировки (таковым считается и день прибытия) из расчета среднего заработка;

Суточные за этот день;

Отработанные часы.

Соответственно, в табеле могут быть проставлены коды, обозначающие нахождение сотрудника в командировке и факт его выхода на работу. При этом в табеле нужно указать и количество отработанных им часов. Предположим, в день возвращения из командировки сотрудник отработал 4 часа. В такой ситуации в соответствующих графах табеля проставляются буквенные коды «К» и «Я» и отработанные часы — «4». Таким образом, бухгалтер отразит факт нахождения сотрудника в командировке, его работы в этот день и количество отработанных часов.

В таком же порядке табель может быть заполнен, если, например, сотрудник возвратился из командировки после 00:00 часов (этот день считается днем командировки) и вышел в этот день на работу.

Поездка в командировку и (или) возвращение из нее в выходные

По решению руководства сотрудник организации может быть направлен в служебную командировку в выходной день (например, в субботу или воскресенье при пятидневной рабочей неделе с двумя выходными днями). Кроме того, он также может вернуться из командировки в выходной день. Как указал Верховный Суд РФ, в данном случае заработок лицу начисляется в соответствии со статьей 153 Трудового кодекса (решение ВС РФ от 20.06.2002 N ГКПИ02-663). Эта статья устанавливает общие правила, по которым оплачивают выходные или нерабочие праздничные дни.

Следовательно, за эти дни оплату сотруднику начисляют исходя не из его среднего заработка (как это предусмотрено для оплаты дней командировки), а из тарифной ставки или оклада, увеличенной как минимум в два раза. В табеле учета рабочего времени в выходные дни проставляются коды «К» и «РВ» с указанием времени в пути, которое на них приходится («К» — служебная командировка, «РВ» — продолжительность работы в выходные и нерабочие праздничные дни).

Работа в дни болезни

Бывает, что сотрудник, находясь на больничном, выходит на работу. А после закрытия листка предъявляет его к оплате. Отметим, что в этой ситуации его труд должен быть оплачен работодателем. Однако за эти дни работник не вправе претендовать на оплату больничного. Ведь пособие предназначено для компенсации заработка, утраченного во время болезни. А в данном случае этого не произошло.

Поэтому в дни болезни и невыхода на работу сотрудника в табеле проставляется код «Т» (нетрудоспособность). При выходе его на работу во время болезни проставляется код «Я» с указанием фактически отработанных часов.

Работа во время отпуска по уходу за ребенком

Зачастую сотрудники организации, которые находятся в отпуске по уходу за ребенком, трудятся в организации на условиях неполного рабочего времени. В этой ситуации возникает вопрос, какой буквенный код должен быть указан в табеле: «Я» (продолжительность работы в дневное время) или «ОЖ» (отпуск по уходу за ребенком)?

В данном случае табель может быть заполнен так же, как и при работе в день командировки. То есть в нем указывают коды «Я» и «ОЖ». При этом в табеле приводят количество часов, фактически отработанных этим сотрудником.

Отметим, что сотрудница вправе прервать такой отпуск и выйти на работу на полный день. С момента выхода сотрудницы на работу в табеле указывают код «Я» (продолжительность работы в дневное время) и количество фактически отработанных часов.

Работа в выходные с предоставлением другого дня отдыха

По трудовому законодательству работу в выходной день оплачивают не менее чем в двойном размере. При этом по желанию сотрудника ему может быть предоставлен другой день отдыха. В такой ситуации работа в выходной день оплачивается в обычном порядке, а день отдыха оплате не подлежит (ст. 153 ТК РФ).

При работе в выходной в табеле указывают код «РВ» (продолжительность работы в выходные и нерабочие праздничные дни), а также количество часов, отработанных сотрудником в выходной (независимо от того, как впоследствии он будет оплачен: в двойном или одинарном размере). Если сотруднику предоставляют дополнительный день отдыха, его отмечают кодом «НВ» (дополнительные выходные дни (без сохранения заработной платы)). Количество рабочих часов в этот день не приводят.

Учет дней донорства

В день сдачи крови и ее компонентов, а также в день связанного с этим медицинского обследования сотрудник должен быть освобожден от работы. При этом за ним сохраняется средний заработок (ст. 186 ТК РФ). После каждого дня сдачи крови ему также предоставляют дополнительный день отдыха. Этот день по желанию сотрудника может быть присоединен к ежегодному оплачиваемому отпуску или использован в другое время в течение года после дня сдачи крови (ст. 186 ТК РФ).

Так как в день сдачи крови работник освобождается от работы, а за этот день и за дополнительный день отдыха, предоставляемый в связи со сдачей крови, сохраняется средний заработок, они отмечаются в табеле кодами «Г» (день сдачи крови) и «ОВ» (дополнительные выходные дни (оплачиваемые)). Количество рабочих часов в эти дни не указывают.

Если работодатель не был заранее уведомлен о причинах неявки работника в день сдачи крови, в табеле ставят код «НН» (неявка по невыясненным причинам (до выяснения обстоятельств)). После получения от работника соответствующей медицинской справки этот код исправляют на код «ОВ».

Прохождение медицинского обследования по направлению военкомата

Организация обязана освободить сотрудника от работы в те дни, когда он выполнял государственные или общественные обязанности. При этом за ним сохраняется место работы и в некоторых случаях средний заработок. Данное правило применяется при условии, что государственные или общественные обязанности сотрудник должен выполнять в рабочее время по Трудовому кодексу или другим федеральным законам (ст. 170 ТК РФ). По закону о воинской службе (Федеральный закон от 28.03.1998 N 53-ФЗ) на время медицинского освидетельствования (обследования или лечения) граждан для решения вопроса о постановке их на воинский учет они освобождаются от работы. При этом за данный период времени организация обязана им выплатить средний заработок.

Следовательно, во время прохождения медицинского обследования сотрудник выполнял свои государственные обязанности. Этот период времени отмечается в табеле кодом «Г» (невыходы на время исполнения государственных или общественных обязанностей согласно законодательству).

Увольнение работника

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

Мнение

Наталья Левинская, эксперт службы Правового консалтинга ГАРАНТ

Анна Кикинская, рецензент службы Правового консалтинга ГАРАНТ

Пособие по временной нетрудоспособности как разновидность страхового обеспечения по обязательному социальному страхованию на случай временной нетрудоспособности и в связи с материнством призвано компенсировать гражданам утраченный заработок в связи с наступлением временной нетрудоспособности (п. 1 ч. 1 ст. 1.2, п. 1 ч. 2 ст. 1.3, п. 1 ч. 1 ст. 1.4 Федерального закона от 29.12.2006 N 255-ФЗ). Следовательно, выплата пособия по временной нетрудоспособности за период, в течение которого заработок утрачен не был, невозможна и противоречит законодательству. В этой ситуации ФСС России может признать, что расходы на выплату страхового обеспечения не могут производиться за счет средств фонда и, соответственно, не принять их к зачету.

Мнение

Татьяна Чашина, эксперт службы Правового консалтинга ГАРАНТ

Иван Михайлов, рецензент службы Правового консалтинга ГАРАНТ

При предоставлении отпуска по уходу за ребенком работодатель обязан издать соответствующий приказ (распоряжение). На его основании делаются соответствующие отметки в личной карточке работника. Но если уход в отпуск зафиксирован приказом, то представляется правильным издать и приказ о прекращении такого отпуска. Приказ будет являться основанием для внесения в личную карточку соответствующих отметок. Сотрудник, который желает прервать отпуск по уходу за ребенком, может заранее в письменной форме проинформировать об этом работодателя, хотя это не обязательно. В этом случае приказ об окончании отпуска издается на основании заявления работника.

Статьи этого раздела

  • Неиспользованные отпуска: риски и варианты решения вопроса

    Как известно, в соответствии с Трудовым кодексом РФ, каждая компания обязана составить график отпусков не менее, чем за 2 недели до нового года. Для HR-служб это сложный проект, надо не только согласовать план на будущий год,…

  • С бала на корабль – легко. Как вернуться к работе после отпуска

    Среди офисных сотрудников есть поверье – если, вернувшись из отпуска, вы не можете вспомнить пароль от рабочей почты, значит, отдохнули вы хорошо. Человек быстро привыкает к расслабленному отпускному состоянию, и первые дни на рабочем месте…

  • Дополнительный выходной день в компании

    Введение дополнительного выходного дня в компании возможно при условии его оплаты, поскольку он лишает работников возможности трудиться в день, не являющийся по закону нерабочим праздничным или выходным. В приказном порядке поменять местами рабочий и выходной…

  • Заполнение больничного листа работодателем

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

  • «Сгорает» ли неиспользованный отпуск?

    Вопрос о том, «сгорает» ли неиспользованный отпуск, если его не отгулять, остается открытым. Пока чиновники уверяют трудящихся в том, что неиспользованные отпуска не «сгорят», суды в некоторых регионах отказывают только что уволившимся гражданам во взыскании компенсации за неиспользованный отпуск по причине пропуска срока обращения в суд.

  • Компенсация за неиспользованный отпуск и проезда к месту отдыха: спорные вопросы

    Рассмотрим топ-3 спорных вопросов, касающихся компенсаций за неиспользованный отпуск и компенсаций проезда к месту отдыха и обратно. Обязан ли работодатель при увольнении выплачивать компенсацию за все неиспользованные отпуска? Можно ли заменять неиспользованный отпуск денежной компенсацией…

  • Отпуск по уходу за ребенком. Разбираемся с горячими вопросами молодых мам

    Рождение ребенка и последующий уход за ним волнительное событие в жизни каждой женщины. Помимо массы хлопот, связанным с уходом за самим ребенком, конечно же возникают вопросы о том как построить отношения с работодателем на период отпуска. Вероника Шатрова, эксперт по трудовому законодательству, директор и главный редактор «Системы Кадры», ответила на ряд горящих вопросов молодых мам и поделилась полезными советами по вопросу оформления отпуска по уходу за ребенком.

  • График отпусков в вопросах и ответах

    Законодательство требует утвердить документ не позднее чем за две недели до наступления нового календарного года. То есть до 17 декабря. Утвержденный график отпусков обязаны исполнять как сотрудники, так и работодатели. Поэтому и у тех и у…

  • Штатное расписание и график отпусков

    Штатное расписание и график отпусков являются чуть ли не самыми проблемными кадровыми документами. С одной стороны, без них нельзя, с другой — при их оформлении возникает масса типичных ошибок.

  • Дистанционная работа для беременной женщины

    Сотрудница в связи с беременностью написала заявление о возможности перевода ее на режим удаленной работы. Оформлять больничный лист по беременности и родам, а также отпуск по уходу за ребенком она не планирует. При выполнении ряда условий сотрудница может продолжить свою работу.

  • Переводим сотрудников на гибкий график работы. Как это сделать, чтобы они не стали работать меньше и хуже

    «За этот месяц два лучших сотрудника подали заявления об увольнении!» – рассказал HR-директору руководитель службы маркетинга. Отдел персонала выяснил, почему сотрудники уходят. От них требуют приходить на работу к 9.30, за опоздание наказывают, но они часто задерживаются до ночи. Люди нашли работу с более гибким графиком. HR-директор предложил гендиректору ввести такой график для сотрудников некоторых подразделений. Он сказал: «Давайте попробуем. Только показатели не должны снизиться!»

  • Устанавливаем гибкий график работы

    Устанавливая гибкий график рабочего времени, необходимо грамотно оформить кадровые документы. Какие именно документы следует составлять, зависит от того, принимается ли работник изначально на гибкий график или он вводится для «старого» сотрудника.

  • Проблемные моменты при выходе на пенсию

    Выход на пенсию — достаточно простая и всем известная процедура. Но это только на первый взгляд. Нужно ли пенсионеру отрабатывать две недели при увольнении? Можно ли дважды выйти на пенсию и что при этом должно быть написано в трудовой книжке? Постараемся разобраться в данных вопросах.

  • Учет рабочего времени. Табель учета

    По материалам книги-справочника «Зарплата и другие выплаты работникам» под редакцией В.Верещаки (http://go.garant.ru/zarplata/) Согласно статье 91 Трудового кодекса «работодатель обязан вести учет времени, фактически отработанного каждым работником». До 1 января 2013 года для учета…

  • Какое время работы будет считаться неполным?

    Ответ: Рабочим является время, в течение которого работник в соответствии с правилами внутреннего трудового распорядка и условиями трудового договора должен исполнять трудовые обязанности, а также иные периоды, которые ТК РФ, другими федеральными законами и иными нормативными правовыми актами отнесены к рабочему времени.

  • Нюансы предоставления отпуска без сохранения заработной платы

    Достаточно часто работники обращаются к руководителю учреждения с просьбой о предоставлении отпуска «за свой счет». Работники меж собой называют такой отпуск административным, а в трудовом законодательстве он называется отпуском без сохранения заработной платы. Всегда ли руководство обязано предоставить такой отпуск работнику, есть ли ограничения по его длительности, можно ли отозвать работника из него и как влияет данный отпуск на стаж для предоставления ежегодного оплачиваемого отпуска — расскажем в данной статье.

  • Вопросы, возникающие при установлении неполного рабочего времени

    По соглашению между работником и работодателем трудовым договором может быть установлено неполное рабочее время, а именно неполный рабочий день или неполная рабочая неделя (ст. 93 ТК РФ). В представленной статье рассмотрим наиболее интересные судебные решения по спорам об установлении неполного рабочего времени и оплате работы в указанном режиме.

  • Отзыв работника из отпуска

    Нередко сотрудников в силу производственной необходимости отзывают из ежегодных оплачиваемых отпусков. Правомерно ли подобное действие администрации? Кого нельзя отзывать из отпуска? Как оформить данную процедуру? Ответы на эти и другие вопросы вы найдете в статье.

  • Какова продолжительность ежегодного оплачиваемого отпуска при 0,5 ставки работника

    Должна ли наша организация предоставлять совместителю ежегодный оплачиваемый отпуск продолжительностью 28 календарных дней, ведь работает он всего на 0,5 ставки

  • Отпуск без сохранения зарплаты. Шпаргалка для кадровика

    Трудно представить организацию, в которой работодатель никогда не сталкивался с желанием работника взять отпуск за свой счет (отпуск без сохранения заработной платы). В большинстве случаев речь идет об отпусках, которые предоставляются по просьбе работника и по усмотрению работодателя. Но в определенных ситуациях и для отдельных категорий работников действующее законодательство устанавливает обязанность работодателя по предоставлению отпуска без сохранения заработка.

  • Допустим ли административный отпуск?

    В период экономического спада направление работников в неоплачиваемый отпуск стало распространенным способом снижения расходов на оплату труда. В статье обсудим правомерность его применения. По данным Международной организации труда, в связи с углублением…

  • Путевки за счет ФСС РФ

    В некоторых случаях отдых или лечение могут быть оплачены за счет средств ФСС РФ.

  • Простой — работа в организации временно приостановлена

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

  • Работа во время отпуска по уходу за ребенком: проясняем ситуацию

    Трудовой кодекс законодательно закрепляет решение часто встречающейся в жизни проблемы. Мать ребенка или другие, имеющие право на отпуск по уходу за ребенком лица, в ряде случаев имеют возможность выполнять работу на дому или трудиться неполный рабочий день. И желают эту возможность реализовать. Причин для этого немало: необходима дополнительная материальная поддержка семьи, требуется постоянно повышать свою квалификацию, да и просто, не хочется надолго отрываться от коллектива. Рассмотрим, как это реализуется в трудовом законодательстве.

    Роструд подробно разъяснил, что такое режим ненормированного рабочего дня и как он должен быть компенсирован в соответствии с действующей редакцией Трудового кодекса.

    В нынешних условиях перевод сотрудников на режим неполного рабочего времени практикуется компаниями достаточно часто*. Однако сама процедура установления неполной занятости с точки зрения закона не всегда выполняется безупречно. Давайте рассмотрим наиболее проблемные ситуации, связанные с изменением режима работы, о которых рассказали наши читатели. Проанализируем ошибки, заложенные в этих ситуациях, и подскажем, как их исправить.

  • Переходим на неполное рабочее время

    Разбираем процедуру введения нового режима работы
    В последнее время из-за финансовых трудностей многие компании хотели бы ввести неполное рабочее время. Однако это возможно только при определенных условиях и с соблюдением процедуры, установленной Трудовым кодексом.
    В предлагаемой статье мы расскажем о том, в каком порядке и при каких условиях может вводиться неполное рабочее время и какие документы для этого нужно оформить.

  • Продолжительность рабочего дня (смены)

    Рабочий день – это установленное законом время суток, затрачиваемое на работу. Длительность работы в течение суток, момент ее начала и окончания, перерывы устанавливаются правилами трудового распорядка, а для сменной работы – еще и графиками сменности.

  • Рабочее время – что это?

    Рабочее время – это то время, в течение которого работник по условиям трудового договора должен выполнять свои трудовые обязанности, а также некоторые другие периоды времени, которые законодательство РФ относит к рабочему времени.

6 Работа с таблицами в R

Введение

Таблицы часто необходимы для организации и обобщения данных, особенно с категориальными переменными. При создании таблицы в R она рассматривает вашу таблицу как объект определенного типа (называемый «таблицей»), который очень похож на фрейм данных. Хотя это может показаться странным, поскольку наборы данных хранятся в виде фреймов данных, это означает, что работа с таблицами будет очень простой, поскольку мы подробно рассмотрели фреймы данных в предыдущих руководствах.В этой главе мы обсудим, как создавать различные типы таблиц и как использовать различные статистические методы для анализа табличных данных. На протяжении всей главы будет использоваться набор данных AOSI.

Создание базовых таблиц: table() и xtabs()

Таблица непредвиденных обстоятельств представляет собой таблицу значений и/или процентов для одной или нескольких переменных. В R эти таблицы можно создать с помощью table() вместе с некоторыми его вариациями. Чтобы использовать table(), просто добавьте переменные, которые вы хотите свести в таблицу, через запятую.Обратите внимание, что table() не имеет аргумента data=, как многие другие функции (например, функции ggplot2), поэтому вы часто ссылаетесь на переменную, используя dataset$variable. Некоторые примеры показаны ниже. По умолчанию пропущенные значения исключаются из подсчета; если вы хотите подсчитать эти отсутствующие значения, вы должны указать аргумент useNA=»ifany» или useNA=»always». В приведенных ниже примерах показано, как использовать эту функцию.

  aosi_data <- read.csv("Data/cross-sec_aosi.csv", stringsAsFactors=FALSE, na.строки = ".")

# Таблица для пола
таблица (aosi_data $ пол)  
  ##
## Женщина мужчина
## 235 352  
  # Стол для учебного места
таблица (aosi_data $ Study_Site)  
  ##
## PHI SEA STL UNC
## 149 152 145 141  
  # Двухсторонний стол для пола и учебного места
таблица (aosi_data $ Gender, aosi_data $ Study_Site)  
  ##
## PHI SEA STL UNC
## Женщины 55 67 60 53
## Мужчины 94 85 85 88  
  # Обратите внимание, порядок имеет значение: 1-я переменная — переменная строки, 2-я переменная — переменная столбца

# Попробуем добавить аргумент useNA
table(aosi_data$Gender, aosi_data$Study_Site, useNA = "ifany")  
  ##
## PHI SEA STL UNC
## Женщины 55 67 60 53
## Мужчины 94 85 85 88  
  таблица (aosi_data$Gender, aosi_data$Study_Site, useNA = «всегда»)  
  ##
## PHI SEA STL UNC 
## Женщины 55 67 60 53 0
## Мужчины 94 85 85 88 0
## <Н/Д> 0 0 0 0 0  
  # Давайте сохраним одну из этих таблиц, чтобы использовать ее в последующих примерах. 
table_ex <- таблица (aosi_data $ Gender, aosi_data $ Study_Site)  

Теперь давайте добавим метки строк и столбцов к таблице пола по месту исследования.Для табличного объекта эти метки называются «dimnames» (т. е. имена измерений), доступ к которым можно получить с помощью функции dimnames() . Обратите внимание, что это похоже на функцию names() со списками, за исключением того, что теперь наша таблица имеет несколько измерений, каждое из которых может иметь собственный набор имен. Для таблицы dimnames хранятся в виде списка, где каждая запись списка содержит групповые метки для переменной, соответствующей этому измерению. Имя для каждой из этих записей списка будет указывать фактическую метку, которая будет использоваться в таблице.По умолчанию эти имена пусты, поэтому таблица по умолчанию не имеет меток строк и столбцов. Мы можем изменить это, указав эти имена, используя name() с dimnames().

  ## [[1]]
## [1] "Женский" "Мужской"
##
## [[2]]
## [1] "PHI" "SEA" "STL" "UNC"  
  # видим групповые метки.  Обратите внимание, что каждый набор групповых меток не имеет имени (пробелы рядом с [[1]] и [[2]]). Это более ясно видно при явном доступе к этим именам с помощью name()
имена (dimnames (table_ex))  
  ## [1] "" ""  
  # Теперь изменим эти имена и посмотрим, как изменится таблица
имена(dimnames(table_ex)) <- c("Пол", "Сайт")
имена (dimnames (table_ex))  
  ## [1] "Пол" "Сайт"  
  ## Сайт
## Пол PHI SEA STL UNC
## Женщины 55 67 60 53
## Мужчины 94 85 85 88  
  # Теперь отображаются метки строк и столбцов, что облегчает понимание таблицы  

Также принято просматривать эти таблицы в процентах.Это можно сделать с помощью prop.table() , которая, в отличие от table(), принимает в качестве аргумента объект таблицы, а не фактические интересующие переменные. Обратите внимание, что любые изменения dimnames, сделанные для объекта таблицы, сохраняются при применении prop. table(). Вывод из prop.table() также сохраняется как объект типа table.

  # 2-ходовая пропорциональная таблица
prop_table_ex <- prop.table(table_ex)
prop_table_ex  
  ## Сайт
## Пол PHI SEA STL UNC
## Женский 0.076 0,11413969 0,10221465 0,061
## Мужской 0,16013629 0,14480409 0,14480409 0,149  

Второй способ создания таблиц непредвиденных обстоятельств — использование функции xtabs() , для которой требуется пакет stats (который включен в R по умолчанию, хотя пакет по-прежнему загружается с помощью library() ). Функция xtabs() создает объект типа xtabs, и вы заметите, что вывод как xtabs(), так и tabel() практически идентичен. xtabs() имеет следующие преимущества: 1) метки строк и столбцов включаются автоматически, устанавливаются на имена переменных и 2) есть аргумент data=, что означает, что вам просто нужно ссылаться на имена переменных.С помощью xtabs() вы не перечисляете интересующие вас переменные, разделенные запятыми. Вместо этого вы используете нотацию формулы ~переменная1+переменная2+…, где переменная1 и переменная2 — это имена интересующих переменных. Вы можете добавить более двух переменных (отсюда …). Ниже приведен двусторонний пример пола и сайта.

  библиотека (статистика)
table_ex_xtabs <- xtabs(~Gender+Study_Site, data=aosi_data)
table_ex_xtabs  
  ## Study_Site
## Пол PHI SEA STL UNC
## Женщины 55 67 60 53
## Мужчины 94 85 85 88  

Чтобы создать таблицу пропорций с помощью xtab(), вы сначала создаете таблицу подсчетов с помощью xtab(), а затем используете свойство prop.table() для этого табличного объекта. Это именно то, что было сделано при использовании table().

Одна полезная функция при создании таблиц — это пропорции: round() . Как видно из предыдущей таблицы пропорций, R по умолчанию не округляет десятичные дроби. Функцию round() можно использовать для всех типов объектов R. Первый аргумент — это объект значений, которые вы хотите округлить, а второй аргумент — это количество знаков после запятой, до которого нужно округлить.

  prop_table_ex_xtabs <- проп.таблица (table_ex_xtabs)
prop_table_ex_xtabs  
  ## Study_Site
## Пол PHI SEA STL UNC
## Женщины 0,076 0,11413969 0,10221465 0,061
## Мужской 0,16013629 0,14480409 0,14480409 0,149  
  prop_table_ex_xtabs <- круглый (prop_table_ex_xtabs, 2)
prop_table_ex_xtabs  
  ## Study_Site
## Пол PHI SEA STL UNC
## Женщины 0,09 0,11 0.10 0,09
## Мужской 0,16 0,14 0,14 0,15  
  prop_table_ex <- раунд (prop_table_ex, 2)
prop_table_ex  
  ## Сайт
## Пол PHI SEA STL UNC
## Женщины 0,09 0,11 0,10 0,09
## Мужской 0,16 0,14 0,14 0,15  

Наконец, мы обсудим, как добавить итоговые значения маржи в вашу таблицу. Независимо от того, используете ли вы table() или xtab(), простой способ добавить все суммы маржи в вашу таблицу — это функция addmargins() из пакета stats.Просто добавьте свою таблицу или объект xtab в качестве первого аргумента в функцию addmargins(), и будет возвращена новая таблица, включающая эти итоговые значения маржи. Это также работает с таблицами пропорций.

  table_ex <- addmargins(table_ex)
table_ex_xtabs <- addmargins(table_ex_xtabs)
prop_table_ex <- addmargins(prop_table_ex)
prop_table_ex_xtabs <- addmargins(prop_table_ex_xtabs)

table_ex  
  ## Сайт
## Пол PHI SEA STL UNC Сумма
## Женщины 55 67 60 53 235
## Мужчины 94 85 85 88 352
## Сумма 149 152 145 141 587  
  ## Study_Site
## Пол PHI SEA STL UNC Сумма
## Женщины 55 67 60 53 235
## Мужчины 94 85 85 88 352
## Сумма 149 152 145 141 587  
  ## Сайт
## Пол PHI SEA STL UNC Сумма
## Женский 0.09 0,11 0,10 0,09 0,39
## Мужчины 0,16 0,14 0,14 0,15 0,59
## Сумма 0,25 0,25 0,24 0,24 0,98  
  ## Study_Site
## Пол PHI SEA STL UNC Сумма
## Женщины 0,09 0,11 0,10 0,09 0,39
## Мужчины 0,16 0,14 0,14 0,15 0,59
## Сумма 0,25 0,25 0,24 0,24 0,98  

Существует множество пакетов, которые можно установить с более продвинутыми инструментами для создания и настройки таблиц непредвиденных обстоятельств. Мы рассмотрим некоторые из них в главе 9, хотя table() и xtabs() должно быть достаточно для исследовательского анализа.

Анализ табличных данных

В этом разделе мы подробно описываем некоторые общие статистические методы, используемые для анализа данных таблицы непредвиденных обстоятельств, а также то, как реализовать эти методы в R. Эти методы определены, и статистика, стоящая за ними, объяснена, а затем реализация в R обсуждается и демонстрируется на примерах. .

Тесты на независимость

Определение независимости

Предположим, у нас есть две категориальные переменные, обозначенные \(X\) и \(Y\).Обозначим совместное распределение \(X\) и \(Y\) через \(f_{x,y}\), распределение \(X\) через \(f_x\) и распределение \(Y\ ) на \(f_y\). Обозначим распределение \(X\) при условии \(Y\) через \(f_{x|y}\), а распределение \(Y\) при условии \(X\) через \(f_{y| Икс}\).

В статистике \(X\) и \(Y\) независимы, если \(f_{x,y}=f_{x}*f_{y}\) (т. е. если распределение \(X\) и \(Y\) как пара равна распределению \(X\), умноженному на распределение \(Y\)). Этот критерий эквивалентен \(f_{x|y}=f_{x}\) и \(f_{y|x}=f_{y}\) (т.е., если распределение \(X\) во всей популяции совпадает с распределением \(X\) в подгруппе, определяемой конкретными значениями \(Y\)). В качестве примера предположим, что нас интересует, не зависит ли человек, участвующий в выборах (\(X\)) от своего пола при рождении (\(Y\)). Если бы эти переменные были независимыми, мы могли бы ожидать, что процент женщин в общей численности населения аналогичен проценту женщин среди людей, которые голосуют на выборах. Это соответствует нашему определению независимости в статистике.

Тест хи-квадрат на независимость

Чтобы обосновать концепцию тестирования на независимость, давайте рассмотрим набор данных AOSI. Давайте посмотрим, независимы ли место исследования и пол. Напомним, таблица непредвиденных обстоятельств для этих переменных в данных была следующей.

  ## Study_Site
## Пол PHI SEA STL UNC Сумма
## Женщины 55 67 60 53 235
## Мужчины 94 85 85 88 352
## Сумма 149 152 145 141 587  
  ## Study_Site
## Пол PHI SEA STL UNC Сумма
## Женский 0.09 0,11 0,10 0,09 0,39
## Мужчины 0,16 0,14 0,14 0,15 0,59
## Сумма 0,25 0,25 0,24 0,24 0,98  

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

  ожидаемая_таблица <- table_ex_xtabs
sex_sums <-ожидаемая_таблица[,5]
site_sums <-ожидаемая_таблица[3,]
ожидаемая_таблица[1,1] <- 149*(235/587)
ожидаемая_таблица[2,1] <- 149*(352/587)

ожидаемая_таблица[1,2] <- 152*(235/587)
ожидаемая_таблица[2,2] <- 152*(352/587)

ожидаемая_таблица[1,3] <- 145*(235/587)
ожидаемая_таблица[2,3] <- 145*(352/587)

ожидаемая_таблица[1,4] <- 141*(235/587)
ожидаемая_таблица[2,4] <- 141*(352/587)
ожидаемая_таблица <- раунд (ожидаемая_таблица, 2)  

Откуда взялись эти значения? Возьмем в качестве примера колонку исследовательского центра в Филадельфии (помеченную как PHI). Как объяснялось ранее, при независимости в Филадельфии мы ожидаем, что процент участников-женщин будет таким же, как процент в общей выборке. В выборке 149 участников из Филадельфии, 235 женщин и 587 субъектов. Общая выборка составляет около 40% женщин, поэтому мы ожидаем, что будет примерно 0,40 * 149 или 59,6 женщин из Филадельфии и, следовательно, примерно 89,4 мужчин. То есть ожидаемое количество равно (общее количество строк * общее количество столбцов)/размеру выборки.Все записи рассчитываются с использованием этого уравнения. Давайте посмотрим на различия между подсчетами по данным AOSI и ожидаемыми подсчетами.

  ожидаемая_таблица[-3,-5]-таблица_ex_xtabs[-3,-5]  
  ## Study_Site
## Пол PHI SEA STL UNC
## Женщины 4,65 -6,15 -1,95 3,45
## Самец -4,65 6,15 1,95 -3,45  

Мы видим, что различия невелики, учитывая границы исследуемого участка, поэтому нет оснований предполагать наличие зависимости.Однако давайте сделаем это более строго, используя формальную проверку гипотезы. Для любой проверки гипотезы мы создаем тестовую статистику, а затем вычисляем p-значение на основе этой тестовой статистики. Неформально p-значение измеряет вероятность того, что вы увидите статистическое значение теста как или более экстремальное, чем значение, наблюдаемое в наборе данных, если нулевая гипотеза верна. Для теста хи-квадрат статистика теста равна сумме квадратов разностей между наблюдаемым и ожидаемым количеством, деленной на ожидаемое количество.Распределение этой тестовой статистики приблизительно равно хи-квадрату с \((r-1)\*(c-1)\) степенями свободы, где \(r\) - количество категорий строк, а \(c\) количество категорий столбцов. Аппроксимация становится более точной по мере того, как большой размер становится все больше и больше (до бесконечности). Таким образом, если размер выборки «достаточно велик», мы можем точно аппроксимировать распределение тестовой статистики с помощью этого распределения хи-квадрат. Это то, что называется «большой выборкой» или «асимптотической» статистикой. Давайте проведем тест Хи-квадрат на наборе данных AOSI. Это делается с помощью summary() с объектом таблицы непредвиденных обстоятельств (созданным с помощью table() или xtab()). Обратите внимание, что вы не можете иметь поля строки и столбца в табличном объекте при проведении этого теста хи-квадрат, так как R будет рассматривать эти поля как категории строк и столбцов.

  table_ex_xtabs <- xtabs(~Gender+Study_Site, data=aosi_data)
сводка (table_ex_xtabs)  
  ## Вызов: xtabs(formula = ~Gender + Study_Site, data = aosi_data)
## Количество случаев в таблице: 587
## Количество факторов: 2
## Тест на независимость от всех факторов:
## Чиск = 2.1011, df = 3, p-значение = 0,5517  

Мы видим, что значение p равно 0,55, что очень велико и ниже порога 0,05 далеко от значимости. Таким образом, у нас нет доказательств, чтобы отвергнуть нулевую гипотезу о том, что пол и место исследования независимы.

Точный тест Фишера

Альтернативой критерию хи-квадрат является точный критерий Фишера. Этот тест гипотезы имеет ту же нулевую и альтернативную гипотезу, что и тест хи-квадрат. Однако его тестовая статистика имеет известное распределение для любого конечного размера выборки.Таким образом, не требуется аппроксимация распределения, в отличие от критерия хи-квадрат, и, таким образом, он дает точные значения p для любого размера выборки. Чтобы провести точный тест Фишера, используйте функцию fisher.test() из пакета stats с таблицей или объектом xtab. Недостатком точного критерия Фишера является то, что он требует большого времени вычислений, если данные имеют большой размер выборки; в этом случае аппроксимация с помощью хи-квадрата, вероятно, будет точной, и следует использовать эту процедуру тестирования. Давайте запустим точный тест Фишера для таблицы непредвиденных обстоятельств пола по сайту.

  fisher.test(table_ex_xtabs)  
  ##
## Точный критерий Фишера для подсчета данных
##
## данные: table_ex_xtabs
## p-значение = 0,553
## альтернативная гипотеза: двусторонний  

Из-за большого размера выборки мы видим, что значение p очень близко к значению p из теста хи-квадрат, как и ожидалось.

Столы с надписями

руб.

Введение

expss вычисляет и отображает таблицы с поддержкой меток в стиле SPSS, множественных/вложенных баннеров, весов, переменных множественного ответа и тестирования значимости.Есть средства для красивого вывода таблиц в блокнотах Knitr, R, Shiny и Jupyter. Надлежащие методы для помеченных переменных добавляют поддержку меток значений к базовым функциям R и к некоторым функциям из других пакетов. Дополнительно пакет предлагает полезные функции для обработки данных в маркетинговых исследованиях/социальных опросах - популярные функции преобразования данных из статистики "SPSS" и "Excel" ('RECODE', 'COUNT', 'COUNTIF', 'VLOOKUP' и т.д.) . Пакет предназначен для того, чтобы помочь людям перенести обработку данных из «Excel»/«SPSS» в R.См. примеры ниже. Вы можете получить справку по любой функции, набрав ?имя_функции в консоли R.

Установка

expss находится в CRAN, поэтому для установки вы можете напечатать в консоли install. packages("expss") .

Примеры кросс-таблиц

Мы будем использовать для демонстрации известный набор данных mtcars . Начнем с добавления меток к набору данных. Затем мы можем продолжить создание таблиц.

  библиотека (расширение)
данные (мткары)
mtcars = apply_labels (mtcars,
                      mpg = "Мили/(США) галлон",
                      cyl = "Количество цилиндров",
                      disp = "Перемещение (куб.в.)",
                      л.с. = «Полная мощность»,
                      drat = "Передаточное отношение задней оси",
                      wt = "Вес (1000 фунтов)",
                      qsec = "время 1/4 мили",
                      vs = "Двигатель",
                      vs = c("V-образный двигатель" = 0,
                             "Прямой двигатель" = 1),
                      ам = "Передача",
                      ам = с ("Автоматически" = 0,
                             "Вручную"=1),
                      gear = "Количество передач переднего хода",
                      carb = "Количество карбюраторов"
)  

Для быстрой сводной таблицы существует семейство функций fre и cross . Для простоты мы демонстрируем здесь только cross_cpct , который вычисляет процент столбца. Документацию по другим функциям, таким как cross_cases для подсчета, cross_rpct для процента строк, cross_tpct для процента таблицы и cross_fun для пользовательских сводных функций, можно просмотреть, введя ?cross_cpct и ?cross_fun 1 консоль.

  # Примеры 'cross_*'
# простая кросстабуляция, похожая на базовую функцию R 'table'
cross_cases(mtcars, am, vs)  
Двигатель
V-образный двигатель Прямой двигатель
Передача инфекции
автоматический 12 7
Руководство 6 7
#Всего случаев 18 14
  # Столбец таблицы % с несколькими баннерами
cross_cpct (mtcars, cyl, список (всего (), am, vs))  
#Всего Передача инфекции Двигатель
автоматический Руководство V-образный двигатель Прямой двигатель
Количество цилиндров
4 34. 4 15,8 61,5 5.6 71,4
6 21,9 21.1 23.1 16,7 28,6
8 43,8 63,2 15,4 77,8
#Всего случаев 32 19 13 18 14
  # использование канала magrittr и вложенные баннеры
мткары %>%
    cross_cpct(cyl, list(total(), am%nest% vs))  
#Всего Передача инфекции
автоматический Руководство
Двигатель Двигатель
V-образный двигатель Прямой двигатель V-образный двигатель Прямой двигатель
Количество цилиндров
4 34. 4 42,9 16,7 100
6 21,9 57,1 50,0
8 43,8 100 33,3
#Всего случаев 32 12 7 6 7

У нас есть более сложный интерфейс для конструкции стола с трубопроводом magrittr .Конструкция таблицы состоит как минимум из трех функций, связанных оператором pipe: %>% . Сначала нам нужно указать переменные, для которых будет вычисляться статистика с помощью tab_cells . Во-вторых, мы вычисляем статистику с помощью одной из функций tab_stat_* . И, наконец, мы завершаем создание таблицы с помощью tab_pivot , т.е. g.: набор данных %>% tab_cells(переменная) %>% tab_stat_cases() %>% tab_pivot() . После этого мы можем дополнительно отсортировать таблицу с помощью tab_sort_asc , удалить пустые строки/столбцы с помощью drop_rc и транспонировать с помощью tab_transpose .Результирующая таблица представляет собой просто data.frame , поэтому мы можем использовать с ней обычные R-операции. Подробную документацию по созданию таблиц можно посмотреть через ?tables . Для проверки значимости см. ?Значимость . Как правило, таблицы автоматически переводятся в HTML для вывода в блокнотах Knitr или Jupyter. Однако, если нам нужен вывод HTML в блокнотах R или в средстве просмотра RStudio, нам нужно установить для этого параметры: expss_output_rnotebook() или expss_output_viewer() .

  # простой пример
мткары %>%
    tab_cells(цилиндр) %>%
    tab_cols(total(), am) %>%
    tab_stat_cpct() %>%
    tab_pivot()  
#Всего Передача инфекции
автоматический Руководство
Количество цилиндров
4 34. 4 15,8 61,5
6 21,9 21.1 23.1
8 43,8 63,2 15,4
#Всего случаев 32 19 13
  # таблица с заголовком
мткары %>%
    tab_cells(mpg, disp, hp, wt, qsec) %>%
    tab_cols(total(), am) %>%
    tab_stat_mean_sd_n() %>%
    tab_last_sig_means(subtable_marks = "оба") %>%
    tab_pivot() %>%
    set_caption("Таблица со сводной статистикой и метками значимости.")  
Таблица со сводной статистикой и метками значимости.
#Всего Передача инфекции
автоматический Руководство
А Б
Мили/(США) галлон
Значит 20. 1 17.1 < В 24,4 > А
стандарт разв. 6,0 3,8 6.2
Unw. действительный N 32,0 19,0 13,0
Рабочий объем (куб. дюйм)
Значит 230.7 290,4 > Б 143,5 < А
стандарт разв. 123,9 110,2 87,2
Unw. действительный N 32,0 19,0 13,0
Полная мощность
Значит 146. 7 160,3 126,8
стандарт разв. 68,6 53,9 84,1
Unw. действительный N 32,0 19,0 13,0
Вес (1000 фунтов)
Значит 3.2 3.8 > Б 2,4 < А
стандарт разв. 1,0 0,8 0,6
Unw. действительный N 32,0 19,0 13,0
время 1/4 мили
Значит 17,8 18. 2 17.4
стандарт разв. 1,8 1,8 1,8
Unw. действительный N 32,0 19,0 13,0
  # Таблица с той же сводной статистикой. Метки статистики в столбцах.
мткары %>%
    tab_cells(mpg, disp, hp, wt, qsec) %>%
    tab_cols(total(label = "#Total| |"), am) %>%
    tab_stat_fun(Среднее = w_mean, "Std.dev." = w_sd, "Действительный N" = w_n, метод = список) %>%
    tab_pivot()  
#Всего Передача инфекции
автоматический Руководство
Значит стандарт разв. Действительный N Значит стандарт разв. Действительный N Значит стандартразв. Действительный N
Мили/(США) галлон 20.1 6,0 32 17.1 3,8 19 24,4 6.2 13
Рабочий объем (куб. дюйм) 230,7 123,9 32 290,4 110,2 19 143.5 87,2 13
Полная мощность 146,7 68,6 32 160,3 53,9 19 126,8 84,1 13
Вес (1000 фунтов) 3. 2 1,0 32 3,8 0,8 19 2.4 0,6 13
время 1/4 мили 17,8 1,8 32 18.2 1,8 19 17,4 1,8 13
  # Разная статистика для разных переменных.
мткары %>%
    tab_cols(total(), vs) %>%
    tab_cells(миль на галлон) %>%
    tab_stat_mean() %>%
    tab_stat_valid_n() %>%
    tab_cells(ам) %>%
    tab_stat_cpct(total_row_position = "none", label = "col %") %>%
    tab_stat_rpct (total_row_position = "none", label = "row %") %>%
    tab_stat_tpct(total_row_position = "нет", метка = "таблица %") %>%
    tab_pivot (stat_position = "inside_rows")  
#Всего Двигатель
V-образный двигатель Прямой двигатель
Мили/(США) галлон
Значит 20. 1 16,6 24,6
Действительный N 32,0 18,0 14,0
Передача инфекции
автоматический цвет % 59,4 66,7 50,0
ряд % 100.0 63,2 36,8
Таблица % 59,4 37,5 21,9
Руководство цвет % 40,6 33,3 50,0
ряд % 100,0 46. 2 53,8
Таблица % 40,6 18,8 21,9
  # Таблица с разбивкой по строкам и с настраиваемыми суммами.
мткары %>%
    tab_cells(цилиндр) %>%
    tab_cols(total(), vs) %>%
    tab_rows(ам) %>%
    tab_stat_cpct(total_row_position = "выше",
                  total_label = c ("количество наблюдений", "% строк"),
                  total_statistic = c("u_cases", "u_rpct")) %>%
    tab_pivot()  
#Всего Двигатель
V-образный двигатель Прямой двигатель
Передача инфекции
автоматический Количество цилиндров #количество случаев 19 12 7
#ряд % 100 63. 2 36,8
4 15,8 42,9
6 21.1 57,1
8 63,2 100,0
Руководство Количество цилиндров #количество случаев 13 6 7
#ряд % 100 46.2 53,8
4 61,5 16,7 100,0
6 23. 1 50,0
8 15,4 33,3
  # Линейная регрессия по группам.мткары %>%
    tab_cells(лист(миль на галлон, расход, л.с., вес, qsec)) %>%
    tab_cols(total(label = "#Total| |"), am) %>%
    tab_stat_fun_df(
        функция (х) {
            frm = переформулировать(".", response = as.name(names(x)[1]))
            модель = лм (фрм, данные = х)
            лист('Коэф.' = коэф(модель),
                  ограничение(модель)
            )
        }
    ) %>%
    tab_pivot()  
#Всего Передача инфекции
автоматический Руководство
Коэф. 2,5 % 97,5 % Коэф. 2,5 % 97,5 % Коэф. 2,5 % 97,5 %
(Перехват) 27,3 9,6 45,1 21,8 -1,9 45,5 13.3 -21,9 48.4
Рабочий объем (куб.дюйм) 0,0 0,0 0,0 0,0 0,0 0,0 0,0 -0,1 0,1
Полная мощность л.с. 0,0 -0,1 0,0 0,0 -0,1 0,0 0.0 0,0 0,1
Вес (1000 фунтов) -4,6 -7,2 -2,0 -2,3 -5,0 0,4 -7,7 -12,5 -2,9
Время 1/4 мили 0,5 -0,4 1,5 0,4 -0. 7 1,6 1,6 -0,2 3.4

Пример обработки данных с переменными множественного ответа

Здесь мы используем усеченный набор данных с данными тестирования двух образцов шоколадных конфет. 150 респондентов протестировали два вида сладостей (кодовые названия: VSX123 и SDF546). Выборка была разделена на две группы (ячейки) по 75 респондентов в каждой группе. В ячейке 1 сначала был представлен продукт VSX123, а затем SDF546.В ячейке 2 сладости предъявлялись в обратном порядке. Вопросы о впечатлениях респондентов о первом продукте находятся в блоке А (а о втором протестированном продукте в блоке Б). В конце анкеты был вопрос о предпочтениях между сладостями.

Список переменных:

  • Идентификатор Идентификатор респондента
  • ячейка Первый протестированный продукт (номер ячейки)
  • s2a Возраст
  • a1_1-a1_6 Что тебе понравилось в этих конфетах? Множественный ответ. Первый испытанный продукт
  • a22 Общее качество. Первый протестированный продукт
  • b1_1-b1_6 Что вам понравилось в этих конфетах? Множественный ответ. Второй протестированный продукт
  • b22 Общее качество. Второй протестированный продукт
  • c1 Настройки
  данные (тест_продукта)

w = product_test # более короткое имя, чтобы сэкономить несколько нажатий клавиш

# здесь мы перекодируем переменные из первого/второго тестируемого продукта, чтобы разделить переменные для каждого продукта в соответствии с их ячейками
# переменные 'h' - образец VSX123, переменные 'p' - образец 'SDF456'
# также мы перекодируем предпочтения с первого/второго продукта на настоящие имена
# для первой ячейки изменений нет, для второй ячейки нужно поменять местами 1 и 2.вес = вес %>%
    let_if (ячейка == 1,
        h2_1 %to%h2_6 := перекодировать(a1_1 %to%a1_6, другое ~ копировать),
        p1_1 %to%p1_6 := перекодировать(b1_1 %to%b1_6, другое ~ копировать),
        h32 := перекодировать(a22, другое ~ копировать),
        p22 := перекодировать(b22, другое ~ копировать),
        с1r = с1
    ) %>%
    let_if (ячейка == 2,
        p1_1 %to%p1_6 := перекодировать(a1_1 %to%a1_6, другое ~ копировать),
        h2_1 %to%h2_6 := перекодировать(b1_1 %to%b1_6, другое ~ копировать),
        p22 := перекодировать(a22, другое ~ копировать),
        h32 := перекодировать(b22, другое ~ копировать),
        c1r := перекодировать (c1, 1 ~ 2, 2 ~ 1, другое ~ скопировать)
    ) %>%
    позволять(
        # перекодировать возраст по группам
        age_cat = recode(s2a, lo %thru% 25 ~ 1, lo %thru% hi ~ 2),
        # подсчитываем количество лайков
        # коды 2 и 99 игнорируются. h_likes = count_row_if(1 | 3 %thru% 98, h2_1 %to% h2_6),
        p_likes = count_row_if(1 | 3% через% 98, p1_1% до% p1_6)
    )

# здесь мы готовим этикетки для будущего использования
codeframe_likes = число_лаб("
    1 Все понравилось
    2 Не понравилось все
    3 Шоколад
    4 Внешний вид
    5 Вкус
    6 Начинка
    7 орехов
    8 Консистенция
    98 Другое
    99 Трудно ответить
")

total_liking_scale = число_лаб("
    1 Крайне плохой
    2 Очень плохо
    3 Довольно плохо
    4 Ни хороший, ни плохой
    5 Неплохо
    6 Очень хорошо
    7 Отлично
")

ш = применить_метки (ш,
    c1r = "Настройки",
    c1r = число_лаб("
        1 VSX123
        2 SDF456
        3 Трудно сказать
    "),
    
    age_cat = "Возраст",
    age_cat = c("18-25" = 1, "26-35" = 2),
    
    h2_1 = "Нравится.VSX123",
    p1_1 = "Нравится. SDF456",
    h2_1 = codeframe_likes,
    p1_1 = codeframe_likes,
    
    h_likes = "Количество лайков. VSX123",
    p_likes = "Количество лайков. SDF456",
    
    h32 = "Общее качество.  VSX123",
    p22 = "Общее качество. SDF456",
    h32 = общая_шкала_любимости,
    p22 = общая_шкала_любимости
)  

Есть ли существенные различия между предпочтениями? Да, разница существенная.

  # 'tab_mis_val(3)' удалить "трудно сказать" из вектора
w %>% tab_cols(total(), age_cat) %>%
      tab_cells(c1r) %>%
      tab_mis_val(3) %>%
      tab_stat_cases() %>%
      tab_last_sig_cases() %>%
      tab_pivot()  
#Всего Возраст
18 - 25 26 - 35
Настройки
VSX123 94.0 46,0 48,0
СДФ456 50,0 22,0 28,0
Тяжело сказать
#Хи-квадрат p-значение <0,05 (предупреждать. )
#Всего случаев 144.0 68,0 76,0

Далее рассчитаем распределение ответов на вопросы анкеты.

  # позволяет указать повторяющиеся части цепочек создания таблиц
баннер = w %>% tab_cols(total(), age_cat, c1r)
# столбец процентов со значением
tab_cpct_sig = . %>% tab_stat_cpct() %>%
                    tab_last_sig_cpct(sig_labels = paste0("",БУКВЫ, ""))

# означает значимость
tab_means_sig = .%>% tab_stat_mean_sd_n(labels = c("Среднее", "sd", "N")) %>%
                      tab_last_sig_means(
                          sig_labels = paste0("",БУКВЫ, ""),
                          держать = "средства")

# Настройки
баннер %>%
    tab_cells(c1r) %>%
    tab_cpct_sig() %>%
    tab_pivot()  
#Всего Возраст Настройки
18 - 25 26 - 35 VSX123 СДФ456 Тяжело сказать
А Б А Б С
Настройки
VSX123 62. 7 65,7 60,0 100,0
СДФ456 33,3 31,4 35,0 100,0
Тяжело сказать 4.0 2,9 5,0 100,0
#Всего случаев 150 70 80 94 50 6
  # В целом нравится
баннер %>%
    tab_cells(h32) %>%
    tab_means_sig() %>%
    tab_cpct_sig() %>%
    tab_cells(p22) %>%
    tab_means_sig() %>%
    tab_cpct_sig() %>%
    tab_pivot()  
#Всего Возраст Настройки
18 - 25 26 - 35 VSX123 СДФ456 Тяжело сказать
А Б А Б С
Общее качество. VSX123
Среднее 5,5 5.4 5.6 5.3 5.8 А 5,5
Крайне бедный
Очень бедный
Довольно бедный 2.0 2,9 1,2 3.2
Ни хороший, ни плохой 10,7 11,4 10,0 14. 9 Б 2.0 16,7
Неплохо 39.3 45,7 33,8 40,4 38,0 33,3
Очень хороший 33,3 24,3 41.2 А 30,9 38,0 33,3
Отлично 14.7 15,7 13,8 10,6 22,0 16,7
#Всего случаев 150 70 80 94 50 6
Общее качество. СДФ456
Среднее 5.4 5.3 5.4 5.4 5.3 5.7
Крайне бедный
Очень бедный 0.7 1,2 1.1
Довольно бедный 2,7 4.3 1,2 2.1 4. 0
Ни хороший, ни плохой 16.7 20,0 13,8 18.1 14,0 16,7
Неплохо 31,3 27.1 35,0 28,7 38,0 16,7
Очень хороший 35.3 35,7 35,0 35,1 34,0 50,0
Отлично 13.3 12,9 13,8 14,9 10,0 16,7
#Всего случаев 150 70 80 94 50 6
  # лайки
баннер %>%
    tab_cells(h_likes) %>%
    tab_means_sig() %>%
    tab_cells(mrset(h2_1%to%h2_6))%>%
    tab_cpct_sig() %>%
    tab_cells(p_likes) %>%
    tab_means_sig() %>%
    tab_cells(mrset(p1_1 %to% p1_6)) %>%
    tab_cpct_sig() %>%
    tab_pivot()  
#Всего Возраст Настройки
18 - 25 26 - 35 VSX123 СДФ456 Тяжело сказать
А Б А Б С
Количество лайков. VSX123
Среднее 2.0 2.0 2.1 1,9 2.2 2.3
Нравится. VSX123
Все понравилось
Не понравилось все 3.3 1,4 5,0 4.3 2.0
Шоколад 34,0 38,6 30,0 35,1 32,0 33,3
Появление 29. 3 21,4 36.2 А 25,5 38,0 16,7
Вкус 32,0 38,6 26,2 23,4 48.0 А 33,3
начинка 27.3 20,0 33,8 28,7 26,0 16,7
Орехи 66,7 72,9 61,3 69,1 60,0 83,3
Последовательность 12. 0 4.3 18,8 А 8,5 14,0 50.0 А Б
Другой
Трудно ответить
#Всего случаев 150 70 80 94 50 6
Количество лайков. СДФ456
Среднее 2.0 2.0 2.1 2.0 2.0 2.0
Нравится. СДФ456
Все понравилось
Не понравилось все 1.3 1,4 1,2 2.1
Шоколад 32,0 27.1 36,2 29,8 34,0 50,0
Появление 32. 0 35,7 28,7 34,0 30,0 16,7
Вкус 39,3 42,9 36,2 36,2 44,0 50,0
начинка 27.3 24,3 30,0 31,9 20,0 16,7
Орехи 61,3 60,0 62,5 58,5 68,0 50,0
Последовательность 10. 0 5.7 13,8 11,7 6,0 16,7
Другой 0,7 1,2 1.1
Трудно ответить
#Всего случаев 150 70 80 94 50 6
  # ниже более сложная таблица, где мы сравниваем лайки рядом
# Лайки - параллельное сравнение
ш %>%
    tab_cols(total(label = "#Total| |"), c1r) %>%
    tab_cells(list(unvr(mrset(h2_1 %to% h2_6)))) %>%
    tab_stat_cpct (метка = var_lab (h2_1)) %>%
    tab_cells(список(unvr(mrset(p1_1 %to% p1_6)))) %>%
    tab_stat_cpct(метка = var_lab(p1_1)) %>%
    tab_pivot (stat_position = "inside_columns")  
#Всего Настройки
VSX123 СДФ456 Тяжело сказать
Нравится. VSX123 Нравится. СДФ456 Нравится. VSX123 Нравится. СДФ456 Нравится. VSX123 Нравится. СДФ456 Нравится. VSX123 Нравится. СДФ456
Все понравилось
Не понравилось все 3.3 1,3 4.3 2.1 2
Шоколад 34,0 32,0 35,1 29,8 32 34 33,3 50,0
Появление 29. 3 32,0 25,5 34,0 38 30 16,7 16,7
Вкус 32,0 39,3 23,4 36,2 48 44 33,3 50,0
начинка 27.3 27,3 28,7 31,9 26 20 16,7 16,7
Орехи 66,7 61,3 69,1 58,5 60 68 83,3 50,0
Последовательность 12. 0 10,0 8,5 11,7 14 6 50,0 16,7
Другой 0,7 1.1
Трудно ответить
#Всего случаев 150 150 94 94 50 50 6 6

Мы можем сохранить помеченный набор данных как *.csv с сопровождающим кодом R для маркировки.

  write_labeled_csv(w, имя файла = "product_test.csv")  

Или мы можем сохранить набор данных в виде файла *.csv с синтаксисом SPSS для чтения данных и применения меток.

  write_labeled_spss(w, имя файла = "product_test.csv")  

Как создавать таблицы в R (9 примеров)

 

В этом руководстве по программированию на R вы узнаете, как создавать, манипулировать и отображать табличные объекты .

Содержание страницы структурировано следующим образом:

Обратите внимание, что в этом руководстве дается краткий обзор использования табличной функции в R. Однако я также опубликовал более подробные руководства по различным темам, показанным в этом руководстве. Вы можете получить доступ к этим учебным пособиям, нажав на ссылки в соответствующих разделах.

В любом случае, пришло время погрузиться в программную часть.

 

Пример данных

В качестве основы для этого руководства по языку программирования R будут использоваться следующие данные:

 данные <- данные. frame(x1 = rep(LETTERS[1:2], # Создать пример фрейма данных
                            каждый = 4),
                   x2 = c(буквы[1:3],
                          буквы [2:5],
                          "б"))
data # Распечатать пример фрейма данных 

data <- data.frame(x1 = rep(LETTERS[1:2], # Создать пример фрейма данных каждый = 4), x2 = c(буквы[1:3], буквы [2:5], "б")) data # Печать примера фрейма данных

 

 

Таблица 1 визуализирует выходные данные консоли RStudio и показывает структуру наших иллюстративных данных — она состоит из восьми строк и двух столбцов символов.

 

Пример 1: Создание таблицы частот

В этом примере показано, как создать таблицу частот в R.

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

 tab1 <- table(data$x2) # Сделать таблицу частот
tab1 # Распечатать таблицу частот
# а б в г д
# 1 3 2 1 1 

tab1 <- table(data$x2) # Сделать таблицу частот tab1 # Распечатать таблицу частот # а б в г д # 1 3 2 1 1

В предыдущем выводе показана частота каждого значения в столбце x2. Например, буква а содержится один раз, а буква б содержится три раза.

 

Пример 2: Создание таблицы непредвиденных обстоятельств

Следующий программный код R объясняет, как создать таблицу непредвиденных обстоятельств, т. е. таблицу из нескольких столбцов.

Следующий код R создает двустороннюю перекрестную таблицу нашего примера фрейма данных:

 tab2 <- table(data) # Создать таблицу непредвиденных обстоятельств
tab2 # Распечатать таблицу непредвиденных обстоятельств
# х2
# x1 а б в г д
# А 1 2 1 0 0
# B 0 1 1 1 1 

tab2 <- table(data) # Создать таблицу непредвиденных обстоятельств tab2 # Распечатать таблицу непредвиденных обстоятельств # х2 # x1 а б в г д # А 1 2 1 0 0 # В 0 1 1 1 1

Предыдущие выходные данные показывают частотное распределение между двумя столбцами x1 и x2.Например, сочетание А и а встречается один раз, а сочетание В и а не встречается вообще.

 

Пример 3: Таблица частоты сортировки

В этом примере показано, как упорядочить табличный объект.

В этом примере мы используем табличный объект tab1, который мы создали в примере 1, в качестве основы.

Мы сортируем эту таблицу, применяя функцию порядка. В функции порядка мы устанавливаем убывающий аргумент равным ИСТИНА, чтобы сначала отображались значения с наибольшим количеством вхождений.

Взгляните на следующий код R:

 tab3 <- tab1[order(tab1, уменьшение = TRUE)] # Таблица заказов
tab3 # Распечатать заказанную таблицу
# б в а г д
# 3 2 1 1 1 

tab3 <- tab1[order(tab1, по убыванию = TRUE)] # Таблица заказов tab3 # Распечатать заказанную таблицу # б в а г д # 3 2 1 1 1

Как видите, первым показан символ b, так как он чаще всего встречается в переменной фрейма данных x2.

 

Пример 4: изменение имен таблицы

В примере 4 я покажу, как переименовывать элементы таблицы.

Для этого мы можем применить имена и функции paste0, как показано в следующем коде R:

 tab4 <- tab3 # Дублировать таблицу
имена(tab4) <- paste0("x", 1:length(tab4)) # Изменить имена
tab4 # Печать переименованной таблицы
# х1 х2 х3 х4 х5
# 3 2 1 1 1 

tab4 <- tab3 # Дублирующая таблица имена(tab4) <- paste0("x", 1:length(tab4)) # Изменить имена tab4 # Печать переименованной таблицы # х1 х2 х3 х4 х5 # 3 2 1 1 1

Предыдущий вывод содержит те же числовые значения, что и таблица, созданная в примере 3. Однако метки этих ячеек таблицы были изменены.

 

Пример 5: Извлечение подмножества таблицы

В приведенном ниже коде показано, как вернуть только определенное подмножество табличного объекта.

Для этого мы используем табличный объект tab1, созданный нами в Примере 1, в качестве основы. Мы можем выбрать подмножество этого объекта таблицы, используя логическое условие, как показано ниже:

 tab5 <- tab1[tab1 > 1] # Извлечь подмножество таблицы
tab5 # Распечатать подмножество таблицы
# До нашей эры
# 3 2 

tab5 <- tab1[tab1 > 1] # Извлечь подмножество таблицы tab5 # Распечатать подмножество таблицы # До нашей эры № 3 2

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

 

Пример 6: Создание таблицы пропорций

В примере 6 я объясню, как создать таблицу пропорций (или вероятностей).

Для этой задачи мы можем применить команду prop.table к табличному объекту (например, tab1), как показано в следующем синтаксисе R:

 tab6 <- prop.table(tab1) # Сделать таблицу пропорций
tab6 # Печать таблицы пропорций
# а б в г д
# 0.125 0,375 0,250 0,125 0,125 

tab6 <- prop.table(tab1) # Сделать таблицу пропорций tab6 # Печать таблицы пропорций # а б в г д # 0,125 0,375 0,250 0,125 0,125

Предыдущий вывод показывает доли каждого значения в наших данных.

 

Пример 7: Рисование таблицы в столбчатой ​​диаграмме

В примере 7 я покажу, как изобразить табличный объект в гистограмме.

Для этого мы должны применить функцию гистограммы к табличному объекту:

 barplot(tab1) # таблица рисования на графике 

barplot(tab1) # таблица рисования на графике

 

 

На рис. 1 показаны выходные данные предыдущего кода R: гистограмма Base R, показывающая значения в таблице, которую мы создали в примере 1. Высота столбцов соответствует вхождению каждого значения в нашу переменную набора данных.

 

Пример 8: преобразование матрицы в таблицу

В этом примере показано, как изменить тип данных числового матричного объекта на класс таблицы.

Для этого примера сначала нужно создать иллюстрирующую матрицу:

 мат <- матрица (1:12, ncol = 3) # Создать пример матрицы
mat # Напечатать пример матрицы 

mat <- matrix(1:12, ncol = 3) # Создать пример матрицы mat # Распечатать пример матрицы

 

 

Как показано в таблице 2, предыдущий программный код R создал матричный объект с четырьмя строками и тремя столбцами.

Теперь мы можем использовать функцию as.table для преобразования этой матрицы в класс таблицы:

 tab7 <- as.table(mat) # Преобразование матрицы в таблицу
tab7 # Распечатать сконвертированную таблицу
# А Б В
# А 1 5 9
№ Б 2 6 10
# С 3 7 11
# D 4 8 12 

tab7 <- as. table(mat) # Преобразование матрицы в таблицу tab7 # Распечатать сконвертированную таблицу # А Б В # А 1 5 9 № Б 2 6 10 # С 3 7 11 № Д 4 8 12

Предыдущий вывод показывает наш новый объект таблицы, который мы создали на основе нашей входной матрицы.

 

Пример 9: Проверка класса табличного объекта

В этом примере показано, как проверить, имеет ли объект данных класс таблицы.

Существует два основных способа сделать это. Либо мы можем применить функцию class() для возврата класса объекта данных…

 class(tab7) # Возвращаемый класс таблицы
# [1] "table" 

class(tab7) # Возвращаемый класс таблицы # [1] "стол"

…или мы можем применить is.табличная функция для возврата логического индикатора, который показывает, имеет ли наш объект данных табличный класс:

 is.table(tab7) # Проверить, является ли объект таблицей
# [1] TRUE 

is. table(tab7) # Проверить, является ли объект таблицей # [1] ИСТИНА

Оба приложения возвращают один и тот же результат: объект данных tab7, который мы создали в примере 8, имеет класс таблицы.

 

Видео, дополнительные ресурсы и резюме

Если вам нужны дополнительные пояснения к примерам из этого руководства, вы можете посмотреть следующее видео на моем канале YouTube.Я показываю содержание этой статьи в видео.

 

Видео YouTube скоро будет добавлено.

 

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

.

 

Резюме: К этому моменту статьи вы должны были узнать, как применять табличную команду для расчета, построения, работы, изменения и рисования табличных объектов в программировании на R.Если у вас есть дополнительные вопросы, не стесняйтесь сообщить мне об этом в комментариях ниже.

 

/* Добавьте свои собственные переопределения стиля формы MailChimp в таблицу стилей вашего сайта или в этот блок стилей.
Мы рекомендуем переместить этот блок и предыдущую ссылку CSS в HEAD вашего HTML-файла. */
]]>

Quick-R: Частоты

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

Создание таблиц частот

R предоставляет множество методов для создания таблиц частоты и непредвиденных обстоятельств. Три описаны ниже. В следующих примерах предположим, что A, B и C представляют категориальные переменные.

стол

Вы можете создавать таблицы частот, используя функцию table() , таблицы пропорций, используя функцию prop.table() , и предельные частоты, используя margin. table() .

# Двухсторонняя таблица частот
attach(mydata)
mytable <- table(A,B) # A будет строками, B будет столбцами
mytable # print table

margin.table(mytable, 1) # Частоты A (суммируются по B)
margin.table(mytable, 2) # Частоты B (суммируются по A)

prop.table(mytable) # проценты ячеек
prop.table(mytable, 1) # проценты строк
prop. table(mytable, 2) # процент столбца

table() также может генерировать многомерные таблицы на основе 3 или более категориальных переменных.В этом случае используйте функцию ftable() , чтобы распечатать результаты более привлекательно.

# 3-полосная таблица частот
mytable <- table(A, B, C)
ftable(mytable)

Таблица игнорирует отсутствующие значения. Чтобы включить NA в качестве категории в счетчики, включите параметр таблицы exclude=NULL, если переменная является вектором. Если переменная является фактором, вы должны создать новый фактор, используя newfactor <- factor(oldfactor, exclude=NULL).

xtabs

Функция xtabs() позволяет создавать перекрестные таблицы с использованием ввода в стиле формулы.

# 3-факторная таблица частот
mytable <- xtabs(~A+B+c, data=mydata)
ftable(mytable) # таблица печати
summary(mytable) # критерий независимости хи-квадрат

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

Перекрестный стол

Функция CrossTable() в пакете gmodels создает перекрестные таблицы, смоделированные на основе PROC FREQ в SAS или CROSSTABS в SPSS. Он имеет множество вариантов.

# 2-сторонняя перекрестная таблица
библиотека (gmodels)
CrossTable (mydata$myrowvar, mydata$mycolvar)

Имеются опции для вывода процентных значений (строка, столбец, ячейка), указания десятичных разрядов, проведения критерия независимости Хи-квадрат, Фишера и Макнемара, отчета об ожидаемых и остаточных значениях (Пирсона, стандартизованного, скорректированного стандартизированного), включения отсутствующих значений как действителен, аннотируйте заголовки строк и столбцов и отформатируйте выходные данные в стиле SAS или SPSS !
Подробности см. в справке (CrossTable) .

Испытания на независимость

Критерий хи-квадрат

Для двусторонних таблиц вы можете использовать chisq.test( mytable ) для проверки независимости переменных строки и столбца. По умолчанию p-значение вычисляется из асимптотического распределения хи-квадрат тестовой статистики. При желании p-значение может быть получено с помощью моделирования Монте-Карло.

Точный тест Фишера

Фишер.test( x ) обеспечивает точную проверку независимости. x — это двумерная таблица непредвиденных обстоятельств в матричной форме.

Камин - Haenszel тест

Используйте функцию mantelhaen.test( x ) для выполнения критерия хи-квадрата Кокрана-Мантеля-Хензеля нулевой гипотезы о том, что две номинальные переменные условно независимы в каждой страте, при условии, что не существует трех- способ взаимодействия. x — это трехмерная таблица сопряженности, где последнее измерение относится к слоям.

Логлинейные модели

Вы можете использовать функцию loglm() в пакете MASS для создания логарифмически-линейных моделей. Например, предположим, что у нас есть трехсторонняя таблица непредвиденных обстоятельств, основанная на переменных A, B и C.

библиотека (MASS)
mytable <- xtabs(~A+B+C, данные=mydata)

Мы можем выполнить следующие тесты:

Взаимная независимость : A, B и C попарно независимы. loglm(~A+B+C, mytable)

Частичная независимость : A частично не зависит от B и C (т. е. A не зависит от составной переменной BC). loglin(~A+B+C+B*C, mytable)

Условная независимость: А не зависит от В при заданном С. loglm(~A+B+C+A*C+B*C, mytable)

Нет трехстороннего взаимодействия loglm(~A+B+C+A*B+A*C+B*C, mytable)

Мартин Теус и Стефан Лауэр написали прекрасную статью о визуализации логлинейных моделей с использованием мозаичных графиков.

Меры ассоциации

Функция assocstats( mytable ) в пакете vcd вычисляет коэффициент phi, коэффициент непредвиденных обстоятельств и V Крамера для таблицы rxc. Функция каппа ( mytable ) в пакете vcd вычисляет каппа Коэна и взвешенную каппа для матрицы смешения. См. статью Ричарда Дарлингтона о мерах ассоциации в таблицах кросс-таблиц для отличного обзора этих статистических данных.

Визуализация результатов

Используйте гистограммы и круговые диаграммы для визуализации частот в одном измерении.

Используйте пакет vcd для визуализации взаимосвязей между категориальными данными (например, мозаичные и ассоциативные графики).

Используйте пакет ca для анализа соответствия (визуальное изучение взаимосвязей между строками и столбцами в таблицах непредвиденных обстоятельств).

Чтобы попрактиковаться в создании этих диаграмм, попробуйте пройти курс визуализации данных в DataCamp.

Преобразование таблиц частот в «исходный» плоский файл

Наконец, могут быть случаи, когда вам понадобится исходный фрейм данных "плоский файл", а не таблица частот. Марк Шварц предоставил код в списке рассылки Rhelp для обратного преобразования таблицы во фрейм данных.

Введение в таблицы непредвиденных обстоятельств в R — Vital Booster для освоения R

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

.

Что такое таблицы непредвиденных обстоятельств в R?

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

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

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

Знаете ли вы об объектно-ориентированном программировании в R

Создание таблиц непредвиденных обстоятельств в R

Таблица непредвиденных обстоятельств — это способ перерисовать данные и собрать их в таблицу. И он показывает расположение исходных данных таким образом, что позволяет читателю получить общую сводку исходных данных. Команду table() можно использовать для создания таблиц непредвиденных обстоятельств в R, поскольку эта команда может обрабатывать данные в виде простых векторов или более сложных объектов матрицы и фрейма данных.Чем сложнее исходные данные, тем сложнее результирующая таблица непредвиденных обстоятельств.

Создание таблиц непредвиденных обстоятельств из векторов в R

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

 > #Автор DataFlair
> vec = c(3,5,7,9,11,3,6,2,1,9,0,5,4)
> таблица (век)
> сортировать(век) 

С помощью команды sort() мы можем получить переупорядоченный набор значений данных.Мы также можем сравнить отсортированные значения с выводом, полученным при применении к ним команды table().

Знакомство с числовыми и символьными функциями в R

Создание таблиц сопряженности R на основе данных

В этом разделе мы объясним простой пример, предоставляющий фрейм данных, содержащий числовые значения в одном столбце, а также содержащий факторы в двух столбцах. Эти два столбца факторов содержат символьные переменные.

Чтобы создать нашу таблицу непредвиденных обстоятельств из данных, мы воспользуемся функциями table(), addmargins(), as.data.frame.matrix() и prop.table(). В следующем примере функция table() возвращает таблицу непредвиденных обстоятельств. По сути, он возвращает табличный результат категориальных переменных.

 #Автор DataFlair
библиотека (dplyr)
toy_data = data.frame (c1 = образец (буквы [1: 5], 25, заменить = ИСТИНА),
                      c2 = образец (БУКВЫ [1: 5], 25, заменить = ИСТИНА))

print.data.frame(toy_data)

таблица0 <- таблица (toy_data$c1, toy_data$c2)
печать.таблица(таблица0)

таблица1 <- как.data.frame.matrix(table0) # конвертируем в dataframe
печать.данные.кадр (таблица1)

table2 <- prop.table (table0, margin = 1) %>%
  as.data.frame.matrix() # преобразовать его в фрейм данных
# посмотрите на таблицу
print.data.frame (таблица2, цифры = 2)

table3 <- prop. table (table0, margin = 2) %>%
  as.data.frame.matrix() # преобразовать его в фрейм данных
# посмотрите на таблицу
print.data.frame (таблица 3, цифры = 2)
 

Получаем следующий вывод:

Как создать пользовательские таблицы непредвиденных обстоятельств в R?

Таблицу непредвиденных обстоятельств в R можно создать, используя только часть данных, в отличие от сбора данных из всех строк и столбцов.В подобных ситуациях мы можем выполнить выбор каждой строки и столбца, которые должны использоваться.

Вы можете создать пользовательскую таблицу непредвиденных обстоятельств в R следующими способами:

  • Выполнение выбора столбца для использования в таблице непредвиденных обстоятельств.
  • Выполнение выбора строк, которые должны использоваться.
  • Проведение ротации фреймов данных.
  • Использование объектов данных.
  • Использование фреймов данных.

Подробнее о каждом из них мы узнаем ниже:

1.
Выбор столбцов для использования в таблице непредвиденных обстоятельств R

С помощью команды table() мы можем указать столбцы, с помощью которых можно создавать таблицы непредвиденных обстоятельств. Для этого вам нужно только указать имя векторных объектов следующим образом:

 таблица(таблица1$A) 

Это также может быть записано как:

 таблица(таблица1[,1]) 

Мы получаем следующий вывод, когда запускаем эти команды в нашем RStudio:

2. Выбор строк для использования в таблице непредвиденных обстоятельств R

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

Вы проверили – R Data Frame Tutorial

3.
Ротация фреймов данных в R

Вы можете выполнить ротацию данных, то есть транспонировать данные с помощью команды t() .Это можно сделать следующим образом:

 > т (таблица 1)
 

Мы получаем следующий результат для транспонированной таблицы table1:

4. Создание таблиц сопряженности из матричных объектов в R

Для этого раздела мы создадим нашу матрицу данных наблюдений за птицами следующим образом:

 птица = матрица( c(47, 10, 40, 2, 5, 2, 19, 3, 5, 0, 2, 50, 0, 10, 7, 0, 46, 8, 4, 0, 9, 4 , 0, 0, 2, 4 ,0, 6, 0,0), nrow=6, ncol=5,byrow = TRUE) # заполняем матрицу по строкам

dimnames(bird) = list( c("Черный дрозд", "Зяблик", "Большая синица",
                      «Домовый воробей», «Малиновка», «Певчий дрозд»), # названия строк
                      c("Сад", "Изгородь", "Парк",
                        "Пастбище", "Полесье")) #Имена столбцов
 

Наша матрица «птичка» выглядит так:

Используя команду table() , вы получите результат, показанный в следующей таблице:

 >стол(птица) 

Понимание R Matrix и Matrix Function в R

5.Использование строк фрейма данных в таблице непредвиденных обстоятельств

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

Вы можете заставить его работать следующим образом:

 #Автор DataFlair
таблица (as.matrix (птица) [1,], as.matrix (птица) [2,],
      dnn = c("Сад", "Изгородь"))
 

Кроме того, можно создать новую матрицу, к которой применяется команда table() следующим образом:

 #Автор DataFlair
птица.мат = as.matrix(птица)
таблица (bird.mat[1,], bird.mat[4,], dnn = c("Сад", "Изгородь"))
 

Выбор частей объекта R Table

В R специальный тип матрицы — это таблица. Подобно работе с матричными объектами, вы также можете работать с таблицами. Это также охватывает извлечение матричных объектов, которые аналогичны извлечению табличного объекта.

Ниже перечислены некоторые команды для выбора частей табличного объекта:

> str(pw.tab) – Исследует структуру табличного объекта с именем tab.

> pw.tab[1:3,] – Отображает первые три строки таблицы непредвиденных обстоятельств.

> pw.tab[1:3,1] — Отображает первые три строки первого столбца.

> pw.tab[1:3,1:2] — Отображает первые три строки первого и второго столбцов.

> pw.tab[,'hi'] — Отображает столбец с надписью hi.

> pw.tab[1:3, c('привет', 'середина')] — Отображает первые три строки двух столбцов.

> pw.tab[1:3, c(‘mid’, ‘hi’)] – Отображает некоторые столбцы в новом порядке.

> pw.tab[,c('привет',3)] — Отображает два столбца, используя сочетание имени и номера.

> length(pw.tab) — Отображает длину объекта таблицы.

Первым шагом является создание объекта таблицы с использованием двух столбцов для создания простой таблицы непредвиденных обстоятельств. Команда str() проверяет, является ли результирующий объект таблицей.Таблицу можно отобразить так же, как матрицу, используя квадратные скобки для определения строк и столбцов по мере необходимости. Строки и столбцы могут быть указаны как числа или имена (при необходимости), но вы не можете смешивать имена и числа в одной команде.

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

Преобразование объекта в таблицу

Как упоминалось выше, таблица — это особый тип объекта данных, который похож на матрицу, но также имеет несколько отличий.

Мы используем команду as.table() для преобразования объекта в таблицу. Однако это справедливо только в том случае, если объект находится в матричной форме. В случае фрейма данных объект может быть преобразован в матрицу, а затем в таблицу. Мы сделаем то же самое в R следующим образом:

 > as.table (as.matrix (птица)) 

Тестирование объектов таблицы R

Чтобы проверить, относится ли объект к табличному типу, мы используем is.таблица () команда. Результат этой команды булев, то есть мы получим либо ИСТИНА, либо ЛОЖЬ.

 > is.table(птица)

> is.table(table0)
 

Сложные таблицы/плоские таблицы в R

Несколько строк и столбцов разделены для формирования одной таблицы. Это происходит в плоском столе. Мы можем создать то же самое, используя альтернативную команду table(). Команду ftable() можно использовать по-разному, например:

  • Чтобы создать «плоскую» таблицу непредвиденных обстоятельств в R, мы можем использовать команду ftable().
  • Вы также можете создавать выборочные «плоские» таблицы в R.
Создание «плоских» таблиц непредвиденных обстоятельств в R

«Плоская» таблица непредвиденных обстоятельств в R может быть создана с помощью команды ftable() следующим образом:

 #DataFlair
ftable(toy_data)
 


Мы также можем создавать таблицы непредвиденных обстоятельств в R с помощью команды table(). Мы также можем указать два или более столбца, которые будут использоваться в таблице. Для получения немного другого пользовательского вывода мы можем использовать другой синтаксис.Общая форма команды: ftable(column.items~row.items, data = data.object)

Хотите знать, что означает эта тильда (~)? Ну, он используется для создания формулы в местах, где левая часть символа содержит переменные в виде заголовков строк, разделенных запятыми. Имена векторов также образуют элементы строки. Перед формами ~ находится спецификация столбца, а справа - группы таблицы в порядке спецификации.

Обязательно проверьте функции ввода/вывода в R

Тестирование объектов R Flat Table

Для понимания типа обрабатываемого объекта мы используем команду class(). Эта команда предоставляет уникальную метку для каждого типа объекта. С указанием класса объекта R может определить тип объекта, а также указать его класс.

Для тестирования плоских объектов можно использовать следующую команду:

 if(class(table1) == 'ftable') TRUE иначе FALSE 

В приведенной выше команде класс объекта не является «ftable», так как возвращается FALSE.

R Суммарные команды для таблиц

Таблица — это способ суммировать данные и часто является конечной точкой операции, например, при создании таблицы непредвиденных обстоятельств. Однако желательно выполнять определенные действия над самой таблицей.

Некоторые полезные сводные команды для таблиц показаны следующим образом:

  • table(x, margin = NULL, FUN) – Чтобы получить различное содержимое фрейма данных, матрицы или таблицы, мы используем эту команду. Если поле указано как 1 , мы получим итоговых значений строки , а когда поле указано как 2 , мы получим итоговых значений столбца .

Команда prop.table() предназначена для отображения пропорций общей суммы. Также можно добавить индекс для строк и столбцов, с помощью которого вы можете лучше выразить свои данные с помощью различных пропорций сумм строк и столбцов. Команду prop.table() можно использовать для отображения содержимого таблицы. Это осуществляется пропорционально общей сумме. Наконец, для выражения данных в виде пропорций различных сумм строк и столбцов вы также можете добавить индекс.

  • addmargin(A, margin = c(1, 2), FUN = sum) –  Для возврата функции, которая применяется к строкам или столбцам таблицы, мы используем команду addmargin(). С помощью этой команды вы можете использовать любую функцию для строк или столбцов.

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

Не забудьте проверить рекурсивную функцию R

Перекрестная таблица в R

Чтобы представить строки в табличном формате, мы используем перекрестную таблицу.Для этого мы используем команду xtabs() следующим образом:

xtabs(частота.данные~категории.список, данные)

Обратите внимание, что справа от частоты данных стоит знак тильда (~).

Это похоже на команду ftable(), которую мы обсуждали выше. Логика та же. То есть слева от тильды мы назначаем название частоты данных, а справа — категории. Эти категории можно свести в таблицу со знаком плюс (+).

Наконец, мы вводим имя объекта данных ближе к концу, и если мы этого не сделаем, R не найдет эти переменные!

Мы можем использовать эту команду для наших данных «table1» следующим образом:

 > table1.t = xtabs(A ~ B + C, данные = таблица1)
> таблица1.t
 

Тестирование объектов кросс-таблицы (xtabs)

Когда вы используете команду xtabs() , объект, который вы создаете, является своего рода таблицей и дает ИСТИННЫЙ результат с помощью команды is.table() .Это также дает результат TRUE, если вы используете команду as.matrix() .

Что касается R, то он имеет два вида классов. Вы можете увидеть это с помощью команды class() :

 класс (таблица 1.t) 

Если объект xtabs должен быть протестирован, мы можем столкнуться с проблемой, так как результат класса будет содержать два элемента:

 if(class(table1.t) == 'xtabs') TRUE иначе FALSE 

Этот результат является сообщением об ошибке, так как результат «xtabs» был создан первым.Есть несколько уточнений, которые необходимы для выбора желаемых значений.

Восстановление исходных данных из таблицы непредвиденных обстоятельств

Объект xtabs может быть повторно собран во фрейм данных с помощью команды as.data.frame():

 > as.data.frame(table1.t) 

 as.data.frame(table1.t, responseName = 'B') 

Класс переключения в R

Вы можете использовать команду class() для изменения класса объекта и просмотра текущего класса объекта.Это может быть полезно в случаях, когда объект должен принадлежать к определенному классу, чтобы команда могла работать. В следующем примере объект птицы запрашивается, а затем сбрасывается с помощью команды class():

 > класс (птица)
> атрибуты(птица)$класс <- "таблица"
> птица
> класс (птица)
 

Матрица наблюдений за птицами теперь классифицируется как таблица. Теперь вы можете приступить к созданию фрейма данных из таблицы с помощью команды as.data.frame():

 > птица.df = as.data.frame(птица)
 

Столбцы не помечены должным образом, а нулевые данные остаются нетронутыми в результате выполнения команды as.data.frame()  . Это можно изменить с помощью команды name() и реконструировать данные, опуская нулевые строки, как показано ниже:

 > птица.tt = птица
> class(bird.tt) = 'таблица' #DataFlair
> bird.tt = as.data.frame(bird.tt)
> name(bird.tt) = c('Виды', 'Среда обитания', 'Количество')
> птица.tt = bird.tt[который(bird.tt$Qty > 0),]
> rownames(bird.tt) = as.numeric(1:length(rownames(bird.tt))) #dataflair
> птица.tt
 

  • Первая команда просто создает дублирующую матрицу для работы, сохраняя исходную нетронутой.
  • Вторая команда изменяет класс на « таблица ».
  • Третья команда создает фрейм данных исходных значений.
  • Четвертая команда изменяет имена столбцов.
  • Предпоследняя команда выбирает данные, которые больше нуля, эффективно удаляя 0 наблюдений.
  • Последняя команда восстанавливает метки индексов строк в непрерывной последовательности.

Резюме

В этой статье мы изучили таблицы непредвиденных обстоятельств в R. Эта тема является одной из самых важных концепций, и овладение ею чрезвычайно важно для глубокого понимания программирования R. Кроме того, изучение того, как управлять данными путем построения таблиц, является важной процедурой для обеспечения эффективного процесса анализа данных. Мы надеемся, что вам понравилось читать эту статью.

Следующая статья в вашем путешествии по программированию на R — Учебное пособие по графическим моделям R

Если у вас есть какие-либо вопросы или отзывы, поделитесь ими в разделе комментариев.

Если вы довольны DataFlair, не забудьте порадовать нас своим положительным отзывом на Google | Фейсбук

лучших пакетов R для визуализации табличных данных — создавайте потрясающие таблицы за считанные минуты — Appsilon

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

К счастью, у нас есть решение. В этой статье вы найдете ответы на лучшие пакеты R для визуализации табличных данных. Сегодня мы рассмотрим четыре из них, а также покажем, как связать их вместе в интерактивном приложении R Shiny.

Содержание:


Что такое табличные данные?

Думайте о табличных данных как о чем-то агрегированном из табличных данных. Табличные данные состоят из строк и столбцов, и место их пересечения дает вам конкретную информацию об одной записи — например, количество людей, проживающих в Польше в 2021 году.

Табличные данные обычно не лучший кандидат для визуального представления в виде таблицы. Причина? Он может быть огромным по размеру, и вас интересует только небольшое подмножество.Например, представьте, что у вас есть данные о населении всего мира, а вас интересует только одна страна. Вы можете агрегировать данные, так что у вас останется небольшое, презентабельное подмножество.

Давайте взглянем на один из таких наборов данных, чтобы прояснить ситуацию. У вас должны быть установлены пакеты dplyr и gapminder . Давайте импортируем их обоих и проверим, как выглядит набор данных:

.

 

Изображение 1 — набор данных GapMinder

А вот и табличные данные.Он не может быть представлен напрямую, так как содержит более 1700 строк. Никто не хочет просматривать эту таблицу вручную, поэтому давайте объединим ее во что-то более презентабельное.

Мы будем вести только записи для Польши, отслеживаемые по столбцам год и lifeExp . Вы можете легко выполнить агрегацию с помощью dplyr :

.

Изображение 2 – Ожидаемая продолжительность жизни в Польше с течением времени

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

Зачем использовать R вместо Excel, Python или JavaScript?

Зачем возиться с языками программирования, если с помощью Excel можно стилизовать таблицы как угодно? Ну, вы оставляете много настроек на столе, придерживаясь Excel. Кроме того, таблица не будет интерактивной и даже не даст мне понять воспроизводимость.

А как насчет специального инструмента бизнес-аналитики, такого как Tableau или PowerBI ? Честно говоря, мы использовали их в Appsilon, и они, как правило, очень полезны.Но, как и любой инструмент, они не безупречны. Обязательно ознакомьтесь с нашими подробными сравнениями с R Shiny:

.

Хотите интегрировать Shiny с Tableau? Ознакомьтесь с расширениями RStudio Connect Tableau Analytics для R и Python.

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

Для специалистов по данным это почти всегда сводится к R или Python. Python — это язык программирования общего назначения с большим опытом работы в области науки о данных и машинного обучения. R также может делать практически все, но больше предназначен для расширенной статистики и статистического моделирования.

Вы новичок в R? Вот 6 основных вещей, которые вы должны делать с R как программист.

Вы не ошибетесь, выбрав R или Python, и выбор, скорее всего, сведется к личным предпочтениям или предпочтениям компании, в которой вы работаете. В Appsilon мы выбрали R в качестве предпочтительного языка программирования для науки о данных, машинного обучения, визуализации данных и разработки информационных панелей. Доказано, что это лучше для того, что мы делаем, но ваш пробег может отличаться.

У нас также есть опыт работы с Python и его библиотеками обработки данных. Прочитайте наши подробные Pandas vs.сравнение dplyr ниже:

После этого давайте рассмотрим лучшие пакеты R для визуализации табличных данных.

Пакеты R для визуализации табличных данных

Теперь мы рассмотрим набор пакетов R для визуализации табличных данных. Если вы хотите продолжить, убедитесь, что у вас установлены dplyr , gapminder , gt , kableExtra , DT , plotly и Shiny .

В качестве источника табличных данных мы будем использовать ранее агрегированные данные о продолжительности жизни в Польше.

гт

Пакет gt предназначен для создания таблиц отображения, то есть он не предоставляет пользователю никакого ввода. Это может стать препятствием, если вам нужна возможность фильтрации данных на лету. Тем не менее, GT позволяет легко начать работу:

Да, это так! Таблица будет выглядеть просто, но вы всегда сможете добавить стили позже:

Изображение 3 — Стол gt без стиля

Немного доработаем — добавим заголовок, переименуем столбцы, добавим исходный узел и изменим цвет заливки первой ячейки:

Изображение 4 – Стол в стиле gt

Изучите все тонкости пакета gt от RStudio.Пакет хорошо работает с уценкой R и Quarto и может применяться в промышленности и научных кругах.

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

кабельExtra

Пакет kableExtra позволяет создавать таблицы отображения точно так же, как gt , но с богатой поддержкой тем.Он также немного более гибкий, чем предыдущий пакет.

Начать работу почти легко, еще раз:

Изображение 5 – Нестилизованный стол kableExtra

Стиль снова довольно минималистичный, но kableExtra имеет множество готовых тем, которые вы можете использовать (источник). Давайте посмотрим, как выглядит тема material — мы также добавим сноску и полоску, которая меняется при наведении:

Изображение 6 – Стилизованный стол kableExtra

Так же, как и gt , это хороший вариант, если вам не нужны элементы управления вводом из коробки.Если вы это сделаете, вам повезло — в следующем пакете он встроен.

ДТ

Пакет DT в R предоставляет интерфейс для библиотеки DataTables в JavaScript. Он может отображать матрицы и фреймы данных в виде таблиц и обеспечивает фильтрацию, разбиение на страницы и сортировку по умолчанию.

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

Изображение 7 – Таблица DT без стиля

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

.

Изображение 8 – Стилизованная таблица DT

Вот что произойдет, если щелкнуть фильтры на уровне столбца:

Изображение 9 – Фильтрация таблиц DT

Удивительно видеть так много функций, доступных по умолчанию. Кодирование этой логики вручную заняло бы несколько часов у опытных разработчиков, что делает DT незаменимым средством для экономии времени.

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

Сюжет

Plotly — это удобный пакет для интерактивной визуализации данных. Он доступен для R, Python и JavaScript, и вы можете без проблем использовать его на панелях R Shiny. Обычные диаграммы (линейные, гистограммы, точечные…) выглядят эффектно, но как насчет таблиц?

Давайте узнаем.Вы можете использовать следующий фрагмент для создания базовой таблицы из нашего подмножества:

Изображение 10 — графическая таблица без стиля

Таблица по умолчанию выглядит не лучшим образом и требует гораздо больше кода по сравнению с предыдущими параметрами. Оформление таблицы требует времени:

Изображение 11 – Стилизованная графическая таблица

Подводя итог, таблицы Plotly выглядят ужасно, если вы считаете, что это один из популярных пакетов для визуализации данных. Конечно, вы можете заставить его работать, но действительно ли оно того стоит?

Связываем все вместе

Вы можете использовать все три упомянутых пакета R для визуализации табличных данных при создании веб-приложений с помощью R и R Shiny.Для демонстрации мы создадим простую панель инструментов Shiny, которая:

  • Имеет выпадающее меню для выбора страны.
  • Имеет четыре отдельные части для демонстрации столов из четырех разных упаковок.
  • Автоматически обновляет таблицы при изменении страны.

Все это можно реализовать менее чем в 100 строках кода. Вы поймете почти все из сервера , так как он содержит код для создания таблиц. Пользовательский интерфейс будет содержать заполнители для диаграмм, разделенных различными заголовками и элементами пользовательского интерфейса.

Вот весь код:

Это довольно длинный файл, но он должен быть удобочитаемым, даже если вы не являетесь экспертом R Shiny.

После запуска вы должны увидеть следующее:

Изображение 12 – R Блестящая приборная панель для демонстрации таблицы

Не так уж и плохо, правда?

Если вы разрабатывали информационные панели с помощью Python Dash, R Shiny поначалу будет ощущаться немного по-другому. Мы написали полное сравнение между ними, чтобы вы начали:

Короче говоря, обе библиотеки творят чудеса, и решение, скорее всего, будет зависеть от используемой вами экосистемы.В Appsilon мы использовали оба, но в основном придерживаемся R Shiny для корпоративных приложений.

Ваши информационные панели работают медленно? Рассмотрите возможность использования Apache Arrow для повышения производительности ваших информационных панелей R Shiny.

Конкурс столов RStudio

Считаете ли вы, что у вас есть все необходимое для создания отмеченных наградами визуализаций таблиц данных? Вам повезло, так как RStudio проводит настольный конкурс 2021 года. Он проходит с 30 сентября по 15 ноября 2021 года, так что еще есть время подать заявку.

С чем вы столкнулись? Просмотрите феноменальные записи из Table Contest 2020.

Прежде чем подавать заявку, вам следует учесть несколько моментов:

  • Каждая заявка должна включать весь использованный код и данные, чтобы визуализацию можно было воспроизвести.
  • Вы можете отправить запись как документ R Markdown, репозиторий или проект RStudio Cloud.
  • Вы можете использовать любой пакет для создания таблиц, доступный в R.
  • Вы можете отправить запись либо в виде примера одной таблицы (пример распространенной таблицы, популярной в определенной области), либо в виде учебного руководства (обучения тому, как создать превосходную таблицу).

Все выглядит хорошо? Вы можете подать заявку на участие в конкурсе, заполнив онлайн-форму, но не забудьте заполнить ее до полуночи 15 ноября 2021 года по тихоокеанскому времени.

Что в этом для вас? У RStudio отличные цены для победителей:

  • Главный приз — случайная комбинация футболок, книг и кружек RStudio, а также приведенные ниже призы.
  • Занявший второе место — пообщайтесь с людьми, которые делают наборы для изготовления столов, и годовая подписка на Shinyapps.io Базовый план плюс приз ниже.
  • Honorable Mentions — большая порция шестиугольных наклеек для пакетов RStudio, а также сторона шестигранника для пакетов для изготовления таблиц.

Более подробную информацию о конкурсе столов RStudio можно найти здесь.


Заключение

Подводя итог, мы считаем, что R является наиболее многообещающим вариантом для визуализации табличных данных. Мы использовали упомянутые пакеты бесчисленное количество раз при разработке корпоративных информационных панелей R Shiny и никогда не оглядывались назад.Проявив немного изобретательности, вы можете добавить творческий подход к своим таблицам и лучше сообщать о своих результатах.

Хотите принять участие в конкурсе столов RStudio? Посмотрите нашу галерею R Shiny Dashboard для вдохновения.

Если вы думаете о карьере разработчика R Shiny, ознакомьтесь с нашим недавним руководством. Он содержит множество советов и ресурсов для начинающих и тех, у кого есть многолетний опыт. Кроме того, вы также узнаете, как получить работу в Appsilon — лидере отрасли, разрабатывающем самые передовые в мире приложения R Shiny для компаний из списка Fortune 500.

Связаться с Appsilon

Мария Грыцук

Руководитель проекта

Включите JavaScript для просмотра комментарии на базе Disqus.

Глава 4 Таблицы, условные операторы и циклы

Обзор

Режим выполнения по умолчанию позволяет компьютеру выполнять все выражения в том же порядке, в котором они заданы в коде. Команды управления потоком являются способом изменить последовательность выполнения кода.Мы изучим двух операторов управления потоком из двух категорий управления потоком:

.
  • если и иначе —A условное , обусловливающее выполнение кода
  • для — Цикл , выполнение кода более одного раза

Условные обозначения

Целью условного является условие выполнения кода. if / else условное в R содержит следующие компоненты:

  • Ключевое слово if
  • Состояние, заключенное в круглые скобки ( ( и ) )
  • Код, который будет выполнен, если условие TRUE , внутри фигурных скобок ( { и } )
  • Ключевое слово else (необязательно)
  • Код для выполнения, если условие ЛОЖЬ , внутри фигурных скобок ( { и } ) (необязательно)

Условие должно быть оценено для логических векторов длины 1, содержащих либо ИСТИНА , либо ЛОЖЬ .Если условие TRUE , то выполняется часть кода после , если . Если условие FALSE , то выполняется раздел кода после , еще (если присутствует).

Вот синтаксис условного выражения с if :

  если (условие) {
  выражения
}  

, а вот синтаксис условного выражения с , если , и необязательным , иначе :

.
  если (условие) {
  истинные выражения
} еще {
  ложные выражения
}  

В следующих примерах показано, как выражение после if выполняется, когда условие TRUE :

  х = 3
if(x > 0) print("x положителен!")
## [1] "x положителен!"  

Обратите внимание, что фигурные скобки ( { и } ) опущены, поскольку раздел кода содержит только одно выражение, как и в определении функции (раздел 3.3.4).

При условии FALSE — ничего не происходит:

  х = -5
if(x > 0) print("x положителен!")  

Теперь давайте также добавим второе выражение после else . Первый раздел кода все еще выполняется, когда условие TRUE :

  х = 3
if(x > 0) print("x положительный!") else print("x отрицательный или нулевой!")
## [1] "x положителен!"  

Однако при условии FALSE вместо этого выполняется второй раздел кода:

  х = -5
if(x > 0) print("x положительный!") else print("x отрицательный или нулевой!")
## [1] "x отрицательно или равно нулю!"  

Как можно расширить приведенное выше условное выражение, чтобы напечатать одно из трех сообщений , указывающих, является ли x положительным, отрицательным или нулем?

Условные операторы часто используются, когда наш код разветвляется на два (или более) сценария в зависимости от значения конкретного объекта.Например, мы можем использовать условное выражение для определения (раздел 3.3) нашей собственной версии функции abs (раздел 2.3.4):

  абс2 = функция (х) {
  если (x < 0) вернуть (-x) иначе вернуть (x)
}  

Давайте проверим, работает ли наша пользовательская функция abs2 должным образом:

Да (по крайней мере, для аргументов, являющихся векторами длины 1)!

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

Петли

Цикл используется для выполнения данного раздела кода более одного раза.Количество умноженных на выполнения кода определяется по-разному в разных типах циклов. В цикле для количество выполнений кода определяется заранее на основе длины вектора, переданного при инициализации цикла. Код выполняется один раз для каждого элемента вектора. В каждом «раунде» текущий элемент присваивается переменной, которую мы можем использовать в коде цикла.

Петля для состоит из следующих частей:

  • Ключевое слово для
  • Имя переменной, которое мы присваиваем текущему элементу вектора ( символ )
  • Ключевое слово в
  • Вектор, по которому мы идем ( последовательность )
  • Раздел кода, который определяет, что делать с каждым элементом ( выражений )

Вот синтаксис цикла for :

  для (символ в последовательности) {
  выражения
}  

Обратите внимание, что постоянными ключевыми словами являются только для и для .Все остальные компоненты — а именно, символ , последовательность и выражения — варьируются, и мы сами должны выбрать их значения.

Вот пример цикла для :

  для печати (i в масштабе 1:5) (i)
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5  

Что случилось? Выражение print(i) было выполнено 5 раз, согласно длине вектора 1:5 . Каждый раз i получали следующее значение 1:5 , и раздел кода выводил это значение на экран.

Вектор, определяющий цикл для , не обязательно должен быть числовым. Например:

  for(b in c("Тест", "Один", "Два")) print(b)
## [1] "Тест"
## [1] "Один"
## [1] "Два"  

Здесь выражение print(b) было выполнено 3 раза, согласно длине вектора c("Test","One","Two") . Каждый раз b получал следующее значение вектора, а секция кода выводила b на экран.

Если вектор числовой, он не обязательно должен состоять из последовательных значений:

  for(i in c(8,15,3)) print(i)
## [1] 8
## [1] 15
## [1] 3  

Снова выражение print(i) было выполнено 3 раза, теперь по длине вектора c(8,15,3) .Каждый раз i получали следующее значение вектора, а секция кода выводила на экран i .

Раздел кода даже не должен использовать текущее значение вектора:

  для (i в 1:5) print("A")
## [1] "А"
## [1] "А"
## [1] "А"
## [1] "А"
## [1] "А"  

Здесь выражение print("A") было выполнено 5 раз, согласно длине вектора 1:5 . Каждый раз секция кода выводила на экран фиксированное значение "A" .

Следующий цикл for печатает каждое из чисел от 1 до 10, умноженное на 5:

  for(i in 1:10) print(i * 5)
## [1] 5
## [1] 10
## [1] 15
## [1] 20
## [1] 25
## [1] 30
## [1] 35
## [1] 40
## [1] 45
## [1] 50  

Как вывести десять векторов длины 10, содержащих таблицу умножения от 1 до 10, используя цикл на ?

  ## [1] 1 2 3 4 5 6 7 8 9 10
## [1] 2 4 6 8 10 12 14 16 18 20
## [1] 3 6 9 12 15 18 21 24 27 30
## [1] 4 8 12 16 20 24 28 32 36 40
## [1] 5 10 15 20 25 30 35 40 45 50
## [1] 6 12 18 24 30 36 42 48 54 60
## [1] 7 14 21 28 35 42 49 56 63 70
## [1] 8 16 24 32 40 48 56 64 72 80
## [1] 9 18 27 36 45 54 63 72 81 90
## [1] 10 20 30 40 50 60 70 80 90 100  

В качестве другого примера использования цикла вместо мы можем написать функцию с именем x_in_y .Функция принимает два вектора x и y . Для каждого элемента в x Функция проверяет , будь то он найден в y . Возвращает логический вектор одинаковой длины, что и x .

Вот пример того, как функция должна работать:

  х = с(1, 2, 3, 4, 5)
y = c (2, 1, 5, 5)
x_in_y (x, y)
## [1] ИСТИНА ИСТИНА ЛОЖЬ ЛОЖЬ ИСТИНА  

Проще говоря, нам нужно пройтись по элементам x , каждый раз проверяя, равен ли текущий элемент какому-либо из элементов y .Первое, что может прийти на ум, это выражение:

.
  х == у
## Предупреждение в x == y: длина более длинного объекта не кратна более короткому объекту
## длина
## [1] ЛОЖЬ ЛОЖЬ ЛОЖЬ ЛОЖЬ ЛОЖЬ  

Однако это неправильный ответ. Помните, что сравнение двух векторов с == возвращает парных векторов результатов (раздел 2.3.10). Нам нужно сравнить каждый элемент x с всеми элементами y . Переводя в код R, вот что нам нужно сделать:

  с(
  любой (х[1] == у),
  любой (х [2] == у),
  любой (х [3] == у),
  любой (х[4] == у),
  любой (х [5] == у)
)
## [1] ИСТИНА ИСТИНА ЛОЖЬ ЛОЖЬ ИСТИНА  

Последний раздел кода делает код длинным и не очень общим: он зависит от длины x .Это именно тот тип операции, где пригодится цикл для . Мы можем использовать цикл для , чтобы проверить, содержится ли каждый элемент в x в y , следующим образом:

  for(i in x) print(any(i == y))
## [1] ИСТИНА
## [1] ИСТИНА
## [1] ЛОЖЬ
## [1] ЛОЖЬ
## [1] ИСТИНА  

Внутри функции, а не просто на печать, мы хотели бы «собрать» результаты в вектор, который будет возвращен пользователю. Есть как минимум два способа сделать это.Один из способов начать с NULL , который указывает пустой объект (раздел 1.3.5), затем последовательно добавить новые элементы с c :

  x_in_y = функция (x, y) {
  результат = НУЛЬ
  for(i in x) result = c(result, any(i == y))
  результат
}  

Другой способ — начать с вектора, состоящего из NA с правильной длиной ( rep(NA,length(x)) ), затем заполнить результаты, используя присваивание:

  x_in_y = функция (x, y) {
  результат = повтор (NA, длина (x))
  for(i in 1:length(x)) result[i] = any(x[i] == y)
  результат
}  

Обратите внимание на разницу в векторе цикла для , который мы просматриваем в двух версиях.В первой версии мы проходим элемента из x , поэтому цикл инициализируется for(i in x) . Во второй версии мы проходим по индексам из x , поэтому цикл инициализируется с for(i in 1:length(x)) .

Выполните приведенное выше определение функции, а затем конкретный пример, показанный ранее, чтобы продемонстрировать, что функция x_in_y работает правильно.

Какие изменения нам нужно внести в функцию x_in_y , чтобы создать новую функцию с именем times_x_in_y , которая возвращает счетчика вхождений в y для каждого элемента в x , как показано ниже ?

  раз_x_in_y(x,y)
## [1] 1 1 0 0 2  

Ситуации, когда нам нужно просмотреть подмножества набора данных, обработать эти подмножества, а затем объединить результаты обратно в один объект, очень распространены при обработке данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *