从 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
,因为这将同时加载 stringr
和 dplyr
.
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())
我的数据框是一列,如下所示:
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
,因为这将同时加载 stringr
和 dplyr
.
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())