[英]How to use gsub to keep only the first characters/numbers in a vector in R?
[英]Splitting vector of characters in pipe R - keep only the first part of split
在我更大的 tibble 中,我試圖在其中一個列中拆分字符向量,以僅獲取空格前的第一個單詞。 我試圖通過以下方式解決:
test <- tibble(ID = c("Monday March", "Tuesday March", "Wednesday March")) %>%
mutate(day = strsplit(ID, "\\s")[[1]][1])
但我的新專欄到處都是Monday
:
ID day
<chr> <chr>
1 Monday March Monday
2 Tuesday March Monday
3 Wednesday March Monday
您必須記住 dplyr 默認使用整個向量,如果您想要 rowise 操作只需添加 rowise,如果您更喜歡使用 map 我也提供了答案,老實說,我仍然為 tidyverse 正在遠離函數式編程而感到痛苦,但它更簡潔
library(tidyverse)
test <- tibble(ID = c("Monday March", "Tuesday March", "Wednesday March")) %>%
rowwise() %>%
mutate(day = strsplit(ID, "\\s")[[1]][1])
# old school
test <- tibble(ID = c("Monday March", "Tuesday March", "Wednesday March")) %>%
mutate(day = map_chr(ID,~strsplit(.x, "\\s")[[1]][1]))
這是使用separate
的快捷方式。 如果您不想保留要拆分的文本的第二部分,則只需不為其定義列。
> test <- tibble(ID = c("Monday March", "Tuesday March", "Wednesday March")) %>%
+ separate(ID, into='day', remove=F)
Warning message:
Expected 1 pieces. Additional pieces discarded in 3 rows [1, 2, 3].
> test
# A tibble: 3 x 2
ID day
<chr> <chr>
1 Monday March Monday
2 Tuesday March Tuesday
3 Wednesday March Wednesday
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.