【发布时间】: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