【问题标题】:Mutate new variable on one dataframe by deriving value from another dataframe - Incompatible Issue通过从另一个数据帧派生值来改变一个数据帧上的新变量 - 不兼容的问题
【发布时间】:2019-08-19 03:01:42
【问题描述】:

我正在使用 mutate 通过从数据框 B 中获取值来在数据框 A 中创建一个新列。

我已经尝试使用下面的代码,但它开始抛出错误。 不确定我是否在这里犯了任何错误。请在下面找到代码。

抱歉,我不能共享数据,因为它是机密的。然而,目标很简单,我确信我在某个地方犯了错误。你能纠正我吗?

这里,dfm 是已经创建的数据框,我将使用新数据框 (DF) 的“代码”列值,该数据框也已创建但没有“访问概念 ID”列。

dfm - Old dataframe with 'Code' column of length 256612
DF %>%
   mutate(visit_concept_id = as.integer(as.character(dfm$Code)))

我希望 dfm 数据帧中的“代码”列值填充到新数据帧 (DF) 的 visit_concept_id 列中,但我收到如下所示的错误。请帮忙。不知道它以前是如何工作的,而不是现在。

错误:列 visit_concept_id 的长度必须为 16(组大小)或 1,而不是 256612

str(df) 如下所示

类“tbl_df”、“tbl”和“data.frame”:256612 obs。 17 个变量: $ visit_occurrence_id : int 1 2 3 4 5 6 7 8 9 10 ... $ person_id : int 127 12097 348097 4324235 214214 4213 41412 634643 241245 3255 ... $ visit_concept_id : int 32036 32036 32036 32036 32036 32036 32036 32036 32036 32036 ... $ visit_start_date : 日期, 格式: "2169-06-08" "2169-06-08" "2169-06-08" ... $ visit_start_datetime:POSIXct,格式:“2169-06-08 09:40:00”“2169-06-08 09:41:00”“2169-06-08 09:42:00”... $ visit_end_date : 日期, 格式: "2169-06-08" "2169-06-08" "2169-06-08" ... $ visit_end_datetime : POSIXct, 格式: "2169-06-08 09:40:00" "2169-06-08 09:41:00" "2169-06-08 09:42:00" ... $ visit_type_concept_id : int 44818518 44818518 44818518 44818518 44818518 44818518 44818518 44818518 44818518 44818518 ... $ provider_id:int 0 0 0 0 0 0 0 0 0 0 ... $ care_site_id:int 0 0 0 0 0 0 0 0 0 0 ... $ visit_source_value : chr “门诊” “门诊” “门诊” “门诊” ... $ visit_source_concept_id:int 0 0 0 0 0 0 0 0 0 0 ... $ admissionting_source_concept_id : int 0 0 0 0 0 0 0 0 0 0 ... $ admissionting_source_value : chr NA NA NA NA ... $discharge_to_concept_id:int 0 0 0 0 0 0 0 0 0 0 ... $discharge_to_source_value:chr NA NA NA NA ... $previous_visit_occurrence_id: int 0 1 2 3 4 0 6 7 8 9 ...

【问题讨论】:

  • Code 字段是什么类型的字段?它是编码为整数的数字吗?这行得通吗? DF <- dtm %>% mutate(visit_concept_id = as.integer(as.character(Code)))
  • 代码字段有 4 个不同的值,例如,1234、4567、2345、6543。因此它是一个因子数据类型。在我的新专栏中,我希望它是整数,所以我转换了它
  • 对不起,对于上面的代码,我的意思是(DF <- dtm %>% mutate(visit_concept_id = as.integer((Code))) - 没有.as.character。我不知道这是否会有所不同。
  • 另一件事是,有没有办法如上所示为新列分配值但保留顺序。我的意思是代码列在分配给 visit_concept_id 时,值会被打乱。有没有办法防止这种情况?除了使用合并/加入之外,有没有我可以通过 mutate 优雅地做到这一点?
  • 您可以arrange,但如果没有看到您的数据集就很难判断。也许最好把它作为一个因素。您能否提供str(dtm) 输出的前几行(删除任何机密内容)?这将使我对第一个问题有所了解,而不一定是第二个问题。

标签: r dataframe dictionary dplyr


【解决方案1】:

根据错误消息,您的数据已分组。 试试这个

DF %>% ungroup() %>%
   mutate(visit_concept_id = as.integer(as.character(dfm$Code)))

【讨论】:

  • 实际上,我根本没有使用任何按功能分组。还有另一个名为 DF 的数据框,我想在其中添加此列(代码)。 R如何将其解释为“分组”?你能帮我理解吗?
  • 可以帮我解决这个问题吗? stackoverflow.com/questions/63370682/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
相关资源
最近更新 更多