【问题标题】:head() or top_n() function changing format of the numeric values in the datasethead() 或 top_n() 函数更改数据集中数值的格式
【发布时间】:2019-09-27 23:46:36
【问题描述】:

R head() 和 top_n 函数正在从我的两个数字列中删除小数,我不知道为什么?

我将 R 3.4.4 与 RStudio 1.2.5 和 dplyr 一起使用。我有一个数据集,其中包含 4 个数字列以及其他四种类型的列。我正在尝试使用像这样的简单 head(10) 从该数据集中获取前十行

Top_Ten_Drug_Subclass %>% 
  head(10)

数字列的小数之一被删除。对于前 - 而不是 25.63,它显示 25。第二列仅显示 1 个小数(前 - 25.6),而其他两个在我需要的数字后显示两个小数点。我只是很困惑为什么 head() 或 top_n() 函数会改变格式。 可能解释下面的代码将有助于解决这个谜团。如果我只是通过“ungroup ()”运行下面的代码,它会为 allowed_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))

有人遇到过这样的问题吗?谢谢!

【问题讨论】:

  • See here 提出一个人们可以帮助解决的 R 问题。这包括数据样本、所有必要的代码,以及对您正在尝试做的事情和没有奏效的事情的清晰解释。
  • 在链尾添加%>% data.frame()并检查。 Top_Ten_Drug_Subclass %>% head(10) %>% data.frame
  • @Ronak Shah - 感谢您抽出宝贵时间帮助解决我的问题。 Data.frame 已被弃用,因此没有帮助。 Top_Ten_Drug_Subclass 的类已经是 'tbl_df'。

标签: r dplyr tidyverse head top-n


【解决方案1】:

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

【讨论】:

  • 我不确定这如何回答问题
  • @evng - 感谢您抽出宝贵时间回答我的问题。我已经用更多信息更新了我的原始问题。 “Allowed_Amount”列的数据类型为 numeric/dbl。
猜你喜欢
  • 2015-08-28
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多