将两个数字变量与联合并保留新列作为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()
是为了取第一个非缺失值而构建的。它适用于您提供的尽可能多的列,并且适用于所有数据类型。 unite
是 separate
的补码。它用于将字符串粘贴在一起,因此输出 character
。
我们也可以用fcoalesce
library(data.table)
setDT(df)[, Grossconcat := fcoalesce(Gross, Grossedupnet)]
在尝试使用 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()
是为了取第一个非缺失值而构建的。它适用于您提供的尽可能多的列,并且适用于所有数据类型。 unite
是 separate
的补码。它用于将字符串粘贴在一起,因此输出 character
。
我们也可以用fcoalesce
library(data.table)
setDT(df)[, Grossconcat := fcoalesce(Gross, Grossedupnet)]