函数内的 stringdist

问题描述 投票:0回答:1

我正在 R 中工作并使用以下数据:

  data <- data.frame(
  id = c(1, 2, 1, 2, 1, 2),
  city = c("London", "London", "Lisbon", "Lisbon", "Paris", "Paris"),
  name = c("jane", "janey",  "jane", "janee", "lauran", "laura"))
  
id 城市 名字
1 伦敦
2 伦敦 珍妮
1 里斯本
2 里斯本 珍妮
1 巴黎 劳兰
2 巴黎 劳拉

我的函数对数据进行透视(第 1 节),但我希望它继续对透视表进行 stringdist(第 2 节)

pivot_and_string_dist <- function(input_data,
                                  measure_1,
                                  string_dist_method){

# section 1 - works fine
# see (1) below for output after this section
data_pivoted <- input_data %>%
                pivot_wider(names_from = id,
                            names_glue =  "{.value}_{id}",
                            values_from = c({{measure_1}}))

# section 2 - does not work
# see (2) below for required output after this section 
data_string_dist <- data_pivoted %>%
                    mutate(string_dist_1 = 
                                 stringdist((paste0(!!{{measure_1}}, "_1")),
                                            (paste0(!!{{measure_1}}, "_2")),
                                            method = string_dist_method,
                                            p = 0.1))
return(data_string_dist)
}

(1) 函数第 1 部分之后的输出 - 工作正常

data <- data.frame(
  city = c(London, Lisbon, Paris),
  name_1 = c("jane", "jane", "lauran")
  name_2 = c("janey", "janee", "laura"))
城市 名称_1 名称_2
伦敦 珍妮
里斯本 珍妮
巴黎 劳兰 劳拉

(2) 函数第 2 部分之后所需的输出 - 不起作用

  x <- pivot_and_string_dist(input_data = data,
                             measure_1 = name,
                             string_dist_method = "jw")
  
Error in quos(..., .ignore_empty = "all") : object 'name' not found

(注意:我在这里显示虚拟 stringdist 数字!)

x:

城市 名称_1 名称_2 弦距
伦敦 珍妮 0.4
里斯本 珍妮 0.5
巴黎 劳兰 劳拉 0.6

谢谢

function dplyr stringdist
1个回答
0
投票

您所需要的只是引用

name

x <- pivot_and_string_dist(input_data = data,
                             measure_1 = "name",
                             string_dist_method = "jw")
© www.soinside.com 2019 - 2024. All rights reserved.