Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在表中找到类似的行?_R - Fatal编程技术网

R 如何在表中找到类似的行?

R 如何在表中找到类似的行?,r,R,我对调查数据有一个问题,即有来自同一IP的非常相似的虚假回复——基本上是人们大多数时候点击并做出相同的回答。然而,我确实有一些来自同一IP的真实回复,所以我不能只对其进行过滤 我希望做的是以类似于查找重复行的方式查找“相似”行,但约束条件放松,结果是相似性分数(即第1行中的值与第2行中的值匹配的百分比)。我找不到这个包裹 require(tidyverse) require(janitor) x <- structure(list(group = c("a", "a", "a", "a",

我对调查数据有一个问题,即有来自同一IP的非常相似的虚假回复——基本上是人们大多数时候点击并做出相同的回答。然而,我确实有一些来自同一IP的真实回复,所以我不能只对其进行过滤

我希望做的是以类似于查找重复行的方式查找“相似”行,但约束条件放松,结果是相似性分数(即第1行中的值与第2行中的值匹配的百分比)。我找不到这个包裹

require(tidyverse)
require(janitor)
x <- structure(list(group = c("a", "a", "a", "a", "a", "a", "a", "a", 
                              "a", "a", "b", "b", "b", "b", "b", "c", "c", "c", "c", "c"), 
val1 = c(2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 2, 1), 
val2 = c(1, 1, 1, 2, 1, 2, 2, 3, 3, 3, 1, 1, 3, 2, 3, 2, 3, 1, 3, 1), 
val3 = c(4, 3, 5, 1, 1, 5, 3, 5, 5, 4, 2, 3, 4, 5, 3, 2, 3, 1, 3, 4), 
val4 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), val5 = c(1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 2, 1, 2), 
val6 = c(2, 2, 1, 2, 1, 2, 1, 1, 1, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2)), 
row.names = c(NA, -20L), class = c("tbl_df", "tbl", "data.frame"))

x %>% get_dupes()

#No variable names specified - using all columns.

# A tibble: 2 x 8
#  group  val1  val2  val3  val4  val5  val6 dupe_count
#  <chr> <dbl> <dbl> <dbl> <int> <dbl> <dbl>      <int>
#1 a         1     3     5     1     1     1          2
#2 a         1     3     5     1     1     1          2


x %>% get_dupes(val1, val2, val4, val5, val6)

# # A tibble: 14 x 8
# val1  val2  val4  val5  val6 dupe_count group  val3
# <dbl> <dbl> <int> <dbl> <dbl>      <int> <chr> <dbl>
#   1     1     1     1     2     2          3 a         3
# 2     1     1     1     2     2          3 c         1
# 3     1     1     1     2     2          3 c         4
# 4     1     2     1     2     2          2 a         1
# 5     1     2     1     2     2          2 b         5
# 6     1     3     1     1     1          3 a         5
# 7     1     3     1     1     1          3 a         5
# 8     1     3     1     1     1          3 b         4
# 9     1     3     1     2     2          2 a         4
# 10     1     3     1     2     2          2 c         3
# 11     2     1     1     1     2          2 a         4
# 12     2     1     1     1     2          2 b         2
# 13     2     3     1     1     1          2 b         3
# 14     2     3     1     1     1          2 c         3
require(tidyverse)
要求(看门人)
x%获得重复次数()
#未指定变量名称-使用所有列。
#一个tibble:2x8
#组val1 val2 val3 val4 val5 val6重复计数
#              
#1A1351112
#2 a 1 3 5 1 1 2
x%>%get_重复(值1、值2、值4、值5、值6)
##A tibble:14 x 8
#val1 val2 val4 val5 val6重复计数组val3
#             
#111123A3
#2 1 1 2 3 c 1
#311123C4
#4 1 2 1 2 2 a 1
#512122B5
#613113A5
#713113A5
#8131313B4
#91312A4
#101312C3
#112112A4
#12 2 1 1 2 b 2
#13 2 3 1 1 2 b 3
#14 2 3 1 1 2 c 3
请注意,只有两个实际的副本,但主要是因为val3。如果我们将其从重复项检查中删除,则有14个


我想知道的是,对于这14行,它们有
ncol(x)-1
相似性,或1不相似性。但是,我不在乎它在哪里,所以它需要是动态的。

这是一种基本上基于双循环比较行的方法。本质上,您需要将
n
行与
n-1
其他行进行比较,并计算行的相似性。下面的函数正是这样做的

如果您正在考虑更通用的方法来处理重复,您可以查看
RecordLinkage
包,它可以让您计算字段之间更通用的相似性分数,并使用一些无监督的分类算法来确定重复

然而,以下是一种功能性方法:

require(tidyverse)
要求(看门人)
x%获得重复次数()
#>未指定变量名称-使用所有列。
#>#A tibble:2 x 8
#>组val1 val2 val3 val4 val5 val6重复计数
#>               
#>1A1351112
#>2 a 1 3 5 1 1 2
#用于比较行和返回不匹配数的辅助函数

row_comp这是一种基本上基于双循环比较行的方法。本质上,您需要将
n
行与
n-1
其他行进行比较,并计算行的相似性。下面的函数正是这样做的

如果您正在考虑更通用的方法来处理重复,您可以查看
RecordLinkage
包,它可以让您计算字段之间更通用的相似性分数,并使用一些无监督的分类算法来确定重复

然而,以下是一种功能性方法:

require(tidyverse)
要求(看门人)
x%获得重复次数()
#>未指定变量名称-使用所有列。
#>#A tibble:2 x 8
#>组val1 val2 val3 val4 val5 val6重复计数
#>               
#>1A1351112
#>2 a 1 3 5 1 1 2
#用于比较行和返回不匹配数的辅助函数
世界其他地区公司