将两个数字变量与联合并保留新列作为r中的数字变量

Combining two numeric variables with unite and retaining new column as a numeric variable in r

在尝试使用 unite 连接两个数字列时,我认为这会将结果列转换为字符串 - 如何避免这种情况?

df  %>% unite(housinggrossconcat, housinggrossedupnet, housing.gross, na.rm=TRUE, remove=FALSE))
                %>% unite(grossconcat, grossedupnet, gross, na.rm=TRUE, remove=FALSE)

数据如下所示:

Gross    Grossedupnet    New Column: Grossconcat
 30         NA              30
 NA         45              45 
 NA         45              45
 350        NA              350

只要 Gross 有值,Grossedupnet 就为 NA,反之亦然。它们都是数值。我想将两者连接到新列中,但它正在将新列转换为字符变量。

您正在寻找 coalesce:

df %>%
  mutate(Grossconcat = coalesce(Gross, Grossedupnet))

dplyr::coalesce()是为了取第一个非缺失值而构建的。它适用于您提供的尽可能多的列,并且适用于所有数据类型。 uniteseparate 的补码。它用于将字符串粘贴在一起,因此输出 character

我们也可以用fcoalesce

library(data.table)
setDT(df)[, Grossconcat := fcoalesce(Gross, Grossedupnet)]