Функция head () или top_n () изменяет формат числовых значений в наборе данных - PullRequest
0 голосов
/ 28 сентября 2019

Функции R head() и top_n удаляют десятичные дроби из двух моих числовых столбцов, и я не могу понять, почему?

Я использую R 3.4.4 с RStudio 1.2.5 и dplyr.У меня есть набор данных с 4 числовыми столбцами наряду с четырьмя другими типами столбцов.Я пытаюсь получить первые десять строк из этого набора данных, используя простую головку (10), например,

Top_Ten_Drug_Subclass %>% 
  head(10)

Один из десятичных числовых столбцов удаляется.Для ex - вместо 25.63 он показывает 25. Во втором столбце отображается только 1 десятичный знак (ex - 25.6), в то время как другие два показывают две десятичные точки после числа, что мне и нужно.Я просто очень запутался, почему бы функция head () или top_n () изменила форматы.Возможно, объяснение приведенного ниже кода поможет разгадать эту загадку.Если я просто запускаю приведенный ниже код через "ungroup ()", это дает мне правильное форматирование для столбца allow_amount.Как только я использую head () или top_n (), форматирование для Allowed_Amount возвращается как целое число, однако базовый тип по-прежнему числовой / двойной.Это странно.

    All_Rx_Data_201907 %>% 
  filter(PLAN_ID %like% 'xxxxx' & `MONTH/YEAR` == '062019') %>% 
  inner_join(MemCountPerDrugClass, by = "DRUG_SUBCLASS") %>% 
  select(`MONTH/YEAR`, DRUG_SUBCLASS, DRUG_SUBCLASS_NAME, SCRIP_COUNT, ALLOWED_AMOUNT, PAID_AMOUNT, MEMBER_NUM) %>%
  group_by(`MONTH/YEAR`, DRUG_SUBCLASS, DRUG_SUBCLASS_NAME, MEMBER_NUM) %>% 
  summarise(SCRIP_COUNT = sum(SCRIP_COUNT), ALLOWED_AMOUNT = sum(ALLOWED_AMOUNT), PAID_AMOUNT = sum(PAID_AMOUNT)) %>% 
  mutate(Allowed_Cost_Per_Member = round((ALLOWED_AMOUNT/MEMBER_NUM), 2)
         , Allowed_Cost_Per_Script = round((ALLOWED_AMOUNT/SCRIP_COUNT), 2)) %>% 
  arrange(desc(ALLOWED_AMOUNT)) %>% 
  ungroup() %>% 
  top_n(10, ALLOWED_AMOUNT) %>% 
  arrange(desc(Allowed_Cost_Per_Script))

Кто-нибудь сталкивался с такой проблемой?Спасибо!

1 Ответ

0 голосов
/ 28 сентября 2019

Head () должен возвращать данные без преобразования каких-либо значений.Вы пытались подтвердить типы данных вашего набора данных?Чтобы убедиться, что ваши данные не были переданы в виде целого числа, вызывая исчезновение десятичных знаков.Вы можете использовать функцию str (Top_Ten_Drug_Subclass).

Int - это целое число, а num - это число.

Example: 

'data.frame':   2 obs. of  3 variables:
 $ N  : int  1 2
 $ Age : num  21.5 15.0
 $ Name: Factor w/ 2 levels "Dora","John": 2 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...