R 如何提取总是在特定字符串之前的值

R 如何提取总是在特定字符串之前的值,r,R,我的数据集来自我正在运行的OCR例程。有时它附带的行不包含我需要的数据,这些行通常不包含数字字符 我特别要找的是不总是在同一列的4位数字 structure(list(text.V1 = c("NIT", "NIT", "NIT", "NIT", "NIT", "ORIGEN", "NIT", "NIT"), text.V2 = c(&

我的数据集来自我正在运行的OCR例程。有时它附带的行不包含我需要的数据,这些行通常不包含数字字符 我特别要找的是不总是在同一列的4位数字

structure(list(text.V1 = c("NIT", "NIT", "NIT", "NIT", "NIT", 
"ORIGEN", "NIT", "NIT"), text.V2 = c("900914254", "900914254", 
"900914254", "900914254", "900914254", "DE", "900914254", "900914254"
), text.V3 = c("Linea", "Linea", "Linea", "Unea", "Linea", "LA", 
"Linea", "Linea"), text.V4 = c("980001", "980001", "980001", 
"980001", "880001", "GESTION", "980001", "980001"), text.V5 = c("No", 
"No", "No", "No", "No", "Orden", "No", "No"), text.V6 = c("8198", 
"8194", "8193", "8267", "8292", "medica", "8263", "8266"), text.V7 = c("ORIGEN", 
"ORIGEN", "ORIGEN", "ORIGEN", "ORIGEN", "", "ORIGEN", "ORIGEN"
), text.V8 = c("DE", "DE", "DE", "DE", "DE", "", "DE", "DE"), 
    text.V9 = c("LA", "LA", "LA", "LA", "LA", "", "LA", "LA"), 
    text.V10 = c("GESTION", "GESTION", "GESTION", "GESTION", 
    "GESTION", "", "GESTION", "GESTION")), class = "data.frame", row.names = c(NA, 
-8L))
我有一个函数,它查找ORIGEN单词,然后获取上一列的值。当存在具有不同结构的行时,这将不起作用

image_1_df_3 = data.frame(X1 = apply(image_1_df_3, 1, function(x) x[grep("ORIGEN", x)-1]))
 
Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  arguments imply differing number of rows: 1, 0

编辑

当第一列的值为“ORIGEN”时,会显示错误,当我们尝试使用-1获取上一列的值时,索引变为0。当R从1开始索引时,会产生不平衡。我们可以将该行从apply中删除


或者可能必须从第二个元素开始应用条件

当第一列的值为“ORIGEN”时,会显示错误,当我们尝试使用-1获取上一列的值时,索引变为0。当R从1开始索引时,会产生不平衡。我们可以将该行从apply中删除


或者可能必须从第二个元素开始应用条件

我一直在考虑在数据帧的开头添加两个伪列,这样函数就不会发现任何索引0问题

  image_1_df_3 = image_1_df_3 %>% add_column(new_col = NA, .after = 0)
  image_1_df_3 = image_1_df_3 %>% add_column(new_col = NA, .after = 0)
  image_1_df_3 = data.frame(X1 = apply(image_1_df_3, 1, function(x) x[grep("ORIGEN", x)-1]))

我一直在考虑在数据帧的开头添加两个伪列,这样函数就不会发现任何索引0问题

  image_1_df_3 = image_1_df_3 %>% add_column(new_col = NA, .after = 0)
  image_1_df_3 = image_1_df_3 %>% add_column(new_col = NA, .after = 0)
  image_1_df_3 = data.frame(X1 = apply(image_1_df_3, 1, function(x) x[grep("ORIGEN", x)-1]))

根据你的数据和代码显示,我没有得到任何错误。你能展示一下这个例子的dput吗。那些钠元素是空白的吗。如果您还有一些4位数字的条件,请应用图像1\u df\u 3,1,functionx{i1请查看EDITIs字符串'ORIGEN'或'ORDEN',因为在您的dput中没有带'ORDEN'的字符串。很抱歉,在这里发布一个较小的示例时,这是一个打字错误。我知道这一点,并且在测试时正在考虑它。错误与此无关:基于您的数据和显示的代码,我没有收到任何错误。CA您显示了示例的dput。这些NA元素是否为blanksi.e。如果您还有一些4位数字的条件,请应用图像1\u df\u 3,1,functionx{i1请查看EDITIs字符串'ORIGEN'或'ORDEN',因为在您的dput中没有带'ORDEN'的字符串。对此表示抱歉。在这里发布一个较小的示例时,这是一个拼写错误。我知道这一点,并且在测试时考虑到了这一点。错误与此无关:修复了EDItThank。我正在为ORIGEN一词可以出现在任何因此,仅验证第一列将不会sufficient@AndresMora但是,问题只存在于第一列,因为当你做1-1=0时,对于其他列,如果我理解你的问题,那就不成问题了谢谢。我正在为ORIGEN一词可以出现在任何列这一事实而挣扎。因此,仅验证第一列是不够的@AndresMora但是,问题只在第一列,因为当你做1-1=0时,如果我理解你的问题,其他列就不成问题了