从 R 数据框中的列拆分或提取数字

Splitting or extracting numbers from column in R dataframe

我的数据框是一列,如下所示:

    df<- data.frame(col = c(
    "cat-dog-cat999-dog dog-mouse 23", 
    "dog2-cat45-mouse-cat 7",
    "dog 4",
    "dog6-dog-cat3-cat 6")
    )

我想以每行中只有最后一位数字的列结尾,因此输出将包含

(23,
7,
4,
6 ) 
  

我认为有两种选择:要么在最后一个数字前面加上 space 拆分,要么在每个原始数据中的最后一个数字拆分。

有什么想法吗?

一种方法是使用 sub。假设您的数据框是这样的:

df<- data.frame(A=c("cat-dog-cat999-dog dog-mouse 23", 
"dog2-cat45-mouse-cat 7",
"dog 4",
"dog6-dog-cat3-cat 6")) 

那么你可以使用:

df %>%  mutate(new_column = sub(".* ", "", A))

这可以使用 stringr 中的 str_extract() 函数和 dplyr 中的 mutate 函数来完成 - 只需加载 tidyverse,因为这将同时加载 stringrdplyr.

library(tidyverse)
df<- data.frame(col = c("cat-dog-cat999-dog dog-mouse 23",
   "dog2-cat45-mouse-cat 7",
   "dog 4",
   "dog6-dog-cat3-cat 6")
)

df %>% 
  mutate(col = str_extract(col, "[0-9]*$") %>% 
           as.numeric())