簡體   English   中英

pipe 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM