首页 > 解决方案 > str_c 在 tibble (R) 中除一列之外的所有列

问题描述

我是 tidyverse 的新手。我想加入除一个以外的所有列(因为其他列的名称可能会有所不同)。这是一个明显不起作用的虹膜示例。谢谢 :)

library(tidyverse)

dat <- as_tibble(iris)
dat %>% mutate(New = str_c(!Sepal.Length, sep="_"))

标签: rtidyversestringr

解决方案


我们可以使用select来选择要粘贴和应用的str_cdo.call

library(tidyverse)
dat %>% mutate(New = do.call(str_c, c(select(., !Sepal.Length), sep="_")))

但是,使用unite会更简单。

dat %>% unite(New, !Sepal.Length, sep="_", remove= FALSE)

#   Sepal.Length New                Sepal.Width Petal.Length Petal.Width Species
#          <dbl> <chr>                    <dbl>        <dbl>       <dbl> <fct>  
# 1          5.1 3.5_1.4_0.2_setosa         3.5          1.4         0.2 setosa 
# 2          4.9 3_1.4_0.2_setosa           3            1.4         0.2 setosa 
# 3          4.7 3.2_1.3_0.2_setosa         3.2          1.3         0.2 setosa 
# 4          4.6 3.1_1.5_0.2_setosa         3.1          1.5         0.2 setosa 
# 5          5   3.6_1.4_0.2_setosa         3.6          1.4         0.2 setosa 
# 6          5.4 3.9_1.7_0.4_setosa         3.9          1.7         0.4 setosa 
# 7          4.6 3.4_1.4_0.3_setosa         3.4          1.4         0.3 setosa 
# 8          5   3.4_1.5_0.2_setosa         3.4          1.5         0.2 setosa 
# 9          4.4 2.9_1.4_0.2_setosa         2.9          1.4         0.2 setosa 
#10          4.9 3.1_1.5_0.1_setosa         3.1          1.5         0.1 setosa 
# … with 140 more rows

推荐阅读