แทน
paste
(ช่องว่างเริ่มต้น)
paste0
(บังคับให้รวมส่วนที่ขาดหายไปNA
เป็นอักขระ) หรือ
unite
(จำกัด ไว้ที่ 2 คอลัมน์และ 1 ตัวคั่น)
ผมขอแนะนำให้เป็นทางเลือกที่เป็นความยืดหยุ่นเป็นpaste0
แต่ระมัดระวังมากขึ้นด้วยNA
:stringr::str_c
library(tidyverse)
# check the missing value!!
df <- tibble(
n = c(2, 2, 8),
s = c("aa", "aa", NA_character_),
b = c(TRUE, FALSE, TRUE)
)
df %>%
mutate(
paste = paste(n,"-",s,".",b),
paste0 = paste0(n,"-",s,".",b),
str_c = str_c(n,"-",s,".",b)
) %>%
# convert missing value to ""
mutate(
s_2=str_replace_na(s,replacement = "")
) %>%
mutate(
str_c_2 = str_c(n,"-",s_2,".",b)
)
#> # A tibble: 3 x 8
#> n s b paste paste0 str_c s_2 str_c_2
#> <dbl> <chr> <lgl> <chr> <chr> <chr> <chr> <chr>
#> 1 2 aa TRUE 2 - aa . TRUE 2-aa.TRUE 2-aa.TRUE "aa" 2-aa.TRUE
#> 2 2 aa FALSE 2 - aa . FALSE 2-aa.FALSE 2-aa.FALSE "aa" 2-aa.FALSE
#> 3 8 <NA> TRUE 8 - NA . TRUE 8-NA.TRUE <NA> "" 8-.TRUE
สร้างเมื่อ 2020-04-10 โดยแพ็คเกจ reprex (v0.3.0)
หมายเหตุพิเศษจากstr_c
เอกสารประกอบ
เช่นเดียวกับฟังก์ชัน R อื่น ๆ ส่วนใหญ่ค่าที่หายไปคือ "ติดเชื้อ": เมื่อใดก็ตามที่ค่าที่ขาดหายไปรวมกับสตริงอื่นผลลัพธ์จะหายไปเสมอ ใช้str_replace_na()
เพื่อแปลงNA
เป็นไฟล์"NA"
paste()
? ตัวอย่างข้างต้นx
คอลัมน์ควรมีข้อมูลเป็น2-aa
แล้วและ3-bb
5-cc