我正在尝试提取tibble中所有列的整数的前3位。这个问题是这样的:
我已经成功地提取了第一列的3位数字;
patient_illness$illness_1<- substr(patient_illness$illness_1, 1, 3)
有人知道如何将上面的代码转换成一个循环,以提取所有13列的前三位数字吗?如何用提取的列替换原始列?
cbwuti441#
我们可以在base R中使用lapply
base R
lapply
patient_illness[] <- lapply(patient_illness, substr, 1, 3)
或者,另一种选择是转换为matrix并执行一次
matrix
patient_illness[] <- substr(as.matrix(patient_illness), 1, 3)
或使用dplyr
dplyr
library(dplyr) patient_illness %>% mutate(across(everything(), ~ substr(.x, 1, 3)))
2uluyalo2#
您可以使用str extract和模式\\d{3},它会自动提取第一个匹配项,即给定模式,字符串中的前三位数字:
str extract
\\d{3}
library(tidyverse) patient_illness %>% mutate(across(matches("illness"), ~str_extract(., "\\d{3}")))
2条答案
按热度按时间cbwuti441#
我们可以在
base R
中使用lapply
或者,另一种选择是转换为
matrix
并执行一次或使用
dplyr
2uluyalo2#
您可以使用
str extract
和模式\\d{3}
,它会自动提取第一个匹配项,即给定模式,字符串中的前三位数字: