R 用参考数据框中包含的字符串替换数字

R 用参考数据框中包含的字符串替换数字,r,dplyr,stringr,R,Dplyr,Stringr,我有一个dfu a看起来像: df_a <- tibble::tribble( ~id, ~string, 115088, "1-3-5-13", 678326, "1-9-13-3", 105616, "1-3-5-13" ) 我想用参考数据框id中存储的文本替换df_a中string列中的数字 结果应该是: df_output <- tibble::tribble(

我有一个
dfu a
看起来像:

df_a <- tibble::tribble(
             ~id,    ~string,
          115088, "1-3-5-13",
          678326, "1-9-13-3",
          105616, "1-3-5-13"
          )
我想用参考数据框
id
中存储的文本替换
df_a
string
列中的数字

结果应该是:

df_output <- tibble::tribble(
                  ~id,            ~string,
               115088,  "aaa-bbb-ccc-ddd",
               678326, "aaa-eee-ddd- bbb",
               105616,  "aaa-bbb-ccc-ddd"
               )

<代码> dfyOutux是的,你这里有一个很讨厌的,这是我写的一个专用的C++方法,从R调用它,因为我看到它有AyyMysix.< 我为您编写了一个迭代循环—它可能有效—我不确定,但即使它有效,并且您的数据超过200000行,它也会成为一个问题,并且可能需要很长时间才能完成

temp = strsplit(df_a$string, "-") %>% lapply(function(x) as.numeric(x))
temp.List = list()
actual.List = list()

for(i in 1:length(temp)){
  for (j in 1:nrow(id)){
    if(temp[[i]] %in% id$id_string[j]){
      temp.List[j] = id$name[j]
    }else{
      temp.List[j] = NULL
    }
  }
  actual.List[[i]]= temp.List %>% unlist %>% paste(sep ='-')
}

desired.Output = cbind(df_a$id,actual.List %>% unlist)
#cleanup
rm(temp,temp.List,actual.List)

是的,你有一个很讨厌的,这里是我写的一个C++的方法,从R调用它,因为我看到它有AyyMysix.< 我为您编写了一个迭代循环—它可能有效—我不确定,但即使它有效,并且您的数据超过200000行,它也会成为一个问题,并且可能需要很长时间才能完成

temp = strsplit(df_a$string, "-") %>% lapply(function(x) as.numeric(x))
temp.List = list()
actual.List = list()

for(i in 1:length(temp)){
  for (j in 1:nrow(id)){
    if(temp[[i]] %in% id$id_string[j]){
      temp.List[j] = id$name[j]
    }else{
      temp.List[j] = NULL
    }
  }
  actual.List[[i]]= temp.List %>% unlist %>% paste(sep ='-')
}

desired.Output = cbind(df_a$id,actual.List %>% unlist)
#cleanup
rm(temp,temp.List,actual.List)

string
列中的数字/破折号组合是否具有一致的长度(每行具有相同数量的数字和破折号)?
string
列中的数字/破折号组合是否具有一致的长度(每行具有相同数量的数字和破折号)?