如何使用for循环提取 Dataframe 所有列中字符串的前3位数字?

wgmfuz8q  于 2023-03-20  发布在  其他
关注(0)|答案(2)|浏览(240)

我正在尝试提取tibble中所有列的整数的前3位。
这个问题是这样的:

我已经成功地提取了第一列的3位数字;

patient_illness$illness_1<- substr(patient_illness$illness_1, 1, 3)

有人知道如何将上面的代码转换成一个循环,以提取所有13列的前三位数字吗?
如何用提取的列替换原始列?

cbwuti44

cbwuti441#

我们可以在base R中使用lapply

patient_illness[] <- lapply(patient_illness, substr, 1, 3)

或者,另一种选择是转换为matrix并执行一次

patient_illness[] <- substr(as.matrix(patient_illness), 1, 3)

或使用dplyr

library(dplyr)
patient_illness %>%
    mutate(across(everything(), ~ substr(.x, 1, 3)))
2uluyalo

2uluyalo2#

您可以使用str extract和模式\\d{3},它会自动提取第一个匹配项,即给定模式,字符串中的前三位数字:

library(tidyverse)
patient_illness %>%
   mutate(across(matches("illness"), ~str_extract(., "\\d{3}")))

相关问题