r - 从列中的一串数字中提取字符

标签 r concatenation data-cleaning

好吧,我正在使用旧的扫描 .pdf 进行一些 .pdf 抓取,并将其转换为可读的,并且各列排列得不太好,因此第二列中的一些信息被分成第一列。它看起来像这样:

df1 <- data.frame(A = c("1253", "3534 n", "9348", "0945", "9457 h", "89745 g"), B = c("uiop", "iud", "eidj", "iodw", "ops", "ios"))
df1
        A    B
1    1253 uiop
2  3534 n  iud
3    9348 eidj
4    0945 iodw
5  9457 h  ops
6 89745 g  ios

我希望它最终像这样:

df2 <- data.frame(A = c("1253", "3534", "9348", "0945", "9457", "89745"), B = c("uiop", "niud", "eidj", "iodw", "hops", "gios"))
df2
      A    B
1  1253 uiop
2  3534 niud
3  9348 eidj
4  0945 iodw
5  9457 hops
6 89745 gios

我不确定如何(或者是否可能)编写一些内容来遍历该列(实际数据大约有 2,000 行)并将第 1 列末尾的任何字母与第 2 列中的字母连接起来。

最佳答案

我将其全部粘贴到一列中,然后将数字提取到一列中,将字母提取到另一列中:

library(dplyr)
library(stringr)

df1 %>%
  mutate(
    AB = paste0(A, B),
    numbers = as.numeric(str_extract(AB, pattern = "[:digit:]+")),
    letters = str_extract(AB, pattern = "[:alpha:]+")
  )
#         A    B         AB numbers letters
# 1    1253 uiop   1253uiop    1253    uiop
# 2  3534 n  iud  3534 niud    3534    niud
# 3    9348 eidj   9348eidj    9348    eidj
# 4    0945 iodw   0945iodw    0945    iodw
# 5  9457 h  ops  9457 hops    9457    hops
# 6 89745 g  ios 89745 gios   89745    gios

关于r - 从列中的一串数字中提取字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74779788/

相关文章:

r - 将 data.frame 转换为列表列表

machine-learning - 对于 98% 的列都是空值的数据集,我们能做什么呢?

python - 当某些值包含分隔符作为值的一部分时,如何将 "key=value, key=value, ..."转换为 csv?

r - 关于 LaTeX 的 Pandoc 规则未在 R blogdown 雨果主题上遵循

r - 如何在 ggplot 之后使用 %T>% 管道?

r - 控制 R 散点图中点的大小?

python - 使用for循环的pandas dataframe concat不起作用

seo - HTTP/2最佳实践可以伤害SEO/SERP吗?

mysql - 在 SELECT 语句中设置变量 - MySQL

r - 数据清洗: Function to find very similar variables