r语言 - 无法在 DT 中合并,因为我被强制双 RHS 逻辑到



我在将 1 个称为 data.all 的 1 列合并到我的工作 dfcall 数据时收到此错误

setDT(data)[setDT(data.all), RX_HOSP_SURG_APPR_2010 := i.RX_HOSP_SURG_APPR_2010, on=c("PUF_CASE_ID","SR_ID" )]

警告消息:在[.data.table(setDT(data(、setDT(data.all(、:=(RX_HOSP_SURG_APPR_2010, : 强制双 RHS 以逻辑到 匹配目标列的类型(第 157 列名为 "RX_HOSP_SURG_APPR_2010"(。如果目标列的类型逻辑为 正确,最好提高效率,避免胁迫并创建 RHS 作为类型逻辑。要实现这一点,请考虑 R 的类型后缀: typeof(0L( vs typeof(0(,typeof(NA( vs typeof(NA_integer_( vs 类型(NA_real_(。您可以使用 as.logical(( 包装 RHS 以避免这种情况 警告,但这仍然会执行胁迫。如果目标 列的类型不正确,最好重新访问DT的位置 在那里创建并修复列类型;例如,通过使用 colClasses= in fread((。否则,您现在可以通过添加 在其顶部的新列(所需类型(;例如 DT[,RX_HOSP_SURG_APPR_2010:=as.double(RX_HOSP_SURG_APPR_2010(]。如果 RHS 的 := 具有 nrow(DT( 元素,则赋值称为列 plonk 和 是更改列类型的方法。列类型可以是 观察与sapply(DT,typeof([...截断]

我尝试了不同的方法,但我无法弄清楚

str(data$RX_HOSP_SURG_APPR_2010)

罗技 [1:8671]

假假假娜娜娜娜...str(data.all$RX_HOSP_SURG_APPR_2010)

'haven_labelled' num [1:129296] 0 0 NA NA - attr(, "label"(= chr "2010 年及以后的手术方法" - attr(, "format.spss"(= chr "F1.0" - attr(, "display_width"(= int 23 - attr(, "labels"(= 命名编号 [1:7] 0 1 2 3 4 5 9 ..- attr(*, "名称"(= CHR [1:7] "原发部位无外科手术" "机器人 辅助"机器人转换为打开"腹腔镜"......

任何建议将不胜感激。

您可以共享dput(head(data))dput(head(data.all))"巨大"数据。请改进您的问题。

为了在连接期间动态断言,您需要两个列类相同,并且正如您所注意到的,data中的变量是合乎逻辑的(可能是因为当您从文件中读取它时,它只有零和 NA(,而您在data.all中的变量是一个奇怪的类。

您可以尝试先为班级分配:

class(data$RX_HOSP_SURG_APPR_2010) <- class(data.all$RX_HOSP_SURG_APPR_2010)

相关内容

最新更新