相关疑难解决方法(0)

unique()表示多个变量

我在R中有以下数据框:

> str(df)
'data.frame':   545227 obs. of  15 variables:
 $ ykod : int  93 93 93 93 93 93 93 93 93 93 ...
 $ yad  : Factor w/ 42 levels "BAKUGAN","BARBIE",..: 30 30 30 30 30 30 30 30 30 30 ...
 $ per  : Factor w/ 3 levels "2 AYLIK","3 AYLIK",..: 3 3 3 3 3 3 3 3 3 3 ...
 $ donem: int  201101 201101 201101 201101 201101 201101 201101 201101 201101 201101 ...
 $ sayi …
Run Code Online (Sandbox Code Playgroud)

r unique

66
推荐指数
4
解决办法
14万
查看次数

仅包含选定列的数据框上的唯一

我有一个大于100列的数据框,我会通过只比较两列来找到唯一的行.我希望这是一个简单的,但我无法与它uniqueduplicated我自己合作.

在下面,我想只使用id和id2唯一:

data.frame(id=c(1,1,3),id2=c(1,1,4),somevalue=c("x","y","z"))

id id2 somevalue
1   1         x
1   1         y
3   4         z
Run Code Online (Sandbox Code Playgroud)

我想获得:

id id2 somevalue
1   1         x
3   4         z
Run Code Online (Sandbox Code Playgroud)

要么:

id id2 somevalue
1   1         y
3   4         z
Run Code Online (Sandbox Code Playgroud)

(我没有偏好保留哪些唯一行)

r unique

65
推荐指数
3
解决办法
9万
查看次数

从R中的数据表中提取唯一行

我正在从数据框和矩阵迁移到数据表,但还没有找到从数据表中提取唯一行的解决方案.[,J]虽然我还没有在常见问题解答和介绍插图中找到答案,但我认为有一些我对符号的遗漏.如何在不转换回数据帧的情况下提取唯一行?

这是一个例子:

library(data.table)
set.seed(123)
a <- matrix(sample(2, 120, replace = TRUE), ncol = 3)
a <- as.data.frame(a)
b <- as.data.table(a)

# Confirm dimensionality
dim(a) # 40  3
dim(b) # 40  3

# Unique rows using all columns
dim(unique(a))  # 8 3
dim(unique(b))  # 34 3

# Unique rows using only a subset of columns
dim(unique(a[,c("V1","V2")]))   # 4 2
dim(unique(b[,list(V1,V2)]))    # 29 2
Run Code Online (Sandbox Code Playgroud)

相关问题:这种行为是否与Unix uniq函数一样是未排序数据的结果?

r data.table

27
推荐指数
2
解决办法
4万
查看次数

根据2列删除重复值

我想删除基于在一个数据帧2列匹配重复值,v2v4被删除行之间必须匹配.

> df

   v1  v2  v3   v4  v5
1  7   1   A  100  98 
2  7   2   A  100  97
3  8   1   C   NA  80
4  8   1   C   78  75
5  8   1   C   78  62
6  9   3   C   75  75
Run Code Online (Sandbox Code Playgroud)

为了结果

> df

   v1  v2  v3   v4  v5
1  7   1   A  100  98 
2  8   1   C   NA  80
3  8   1   C   78  75
4  9   3   C   75  75 …
Run Code Online (Sandbox Code Playgroud)

r duplicates

5
推荐指数
1
解决办法
2万
查看次数

如何在R中删除data.table中的所有重复行

假设我们有

library(data.table)    
dt <- data.table(Date = c(201405,201405,201504,201505, 201505,201505), ID = c(500,500,600,700,500, 700), INC = c(20,30,50,75,80,90))
Run Code Online (Sandbox Code Playgroud)

返回,

     Date  ID INC
1: 201405 500  20
2: 201405 500  30
3: 201504 600  50
4: 201505 700  75
5: 201505 500  80
6: 201505 700  90
Run Code Online (Sandbox Code Playgroud)

我要删除同一日期中的所有ID。回报应该是

     Date  ID INC
1: 201504 600  50
2: 201505 500  80
Run Code Online (Sandbox Code Playgroud)

你能建议吗?

r duplicates data.table

4
推荐指数
1
解决办法
850
查看次数

删除R中的重复行(基于2列)

我在R中有一个数据集,如下所示:

    x1 x2  x3
1:  A Away  2
2:  A Home  2
3:  B Away  2
4:  B Away  1
5:  B Home  2
6:  B Home  1
7:  C Away  1
8:  C Home  1
Run Code Online (Sandbox Code Playgroud)

根据列x1和x2中的值,我想删除重复的行.我尝试过以下方法:

df[!duplicated(df[,c('x1', 'x2')]),]
Run Code Online (Sandbox Code Playgroud)

它应该删除第4行和第6行.但遗憾的是它不起作用,因为它返回完全相同的数据,重复项仍然存在于数据集中.为了删除第4行和第6行,我必须使用什么?

r duplicates data.table

2
推荐指数
2
解决办法
1195
查看次数

从数据框中删除重复单位

我正在研究一个有n个协变量的大型数据集.许多行都是重复的.为了识别重复项,我需要使用协变量的子集来创建标识变量.也就是说,(nx)协变量是无关紧要的.我想连接x协变量上的值,以唯一地识别观察结果并消除重复.

set.seed(1234)
UNIT <- c(1,1,1,1,2,2,2,3,3,3,4,4,4,5,6,6,6)
DATE <- c("1/1/2010","1/1/2010","1/1/2010","1/2/2012","1/2/2009","1/2/2004","1/2/2005","1/2/2005",
      "1/1/2011","1/1/2011","1/1/2011","1/1/2009","1/1/2008","1/1/2008","1/1/2012","1/1/2013",
      "1/1/2012")
OUT1 <- c(300,400,400,400,600,700,700,800,800,800,900,700,700,100,100,100,500)
JUNK1 <- c(rnorm(17,0,1))
JUNK2 <- c(rnorm(17,0,1))

test = data.frame(UNIT,DATE,OUT1,JUNK1,JUNK2)
Run Code Online (Sandbox Code Playgroud)

'test'是一个示例数据框.我需要用来唯一识别观察结果的变量是'UNIT','DATE'和'OUT1'.例如,

head(test)
  UNIT     DATE OUT1      JUNK1      JUNK2
1    1 1/1/2010  300 -1.2070657 -0.9111954
2    1 1/1/2010  400  0.2774292 -0.8371717
3    1 1/1/2010  400  1.0844412  2.4158352
4    1 1/2/2012  400 -2.3456977  0.1340882
5    2 1/2/2009  600  0.4291247 -0.4906859
6    2 1/2/2004  700  0.5060559 -0.4405479    
Run Code Online (Sandbox Code Playgroud)

观察1和4在数据集中不重复.观察2和3是重复的.我想要创建的新数据集将保留观察1和4,并且保留2和3中的一个.我尝试的解决方案是:

subset(test, !duplicated(c(UNIT,DATE,OUT1)))
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这并不能解决问题:

      UNIT     DATE OUT1       JUNK1      JUNK2
1        1 …
Run Code Online (Sandbox Code Playgroud)

r duplicates duplicate-removal bigdata

1
推荐指数
1
解决办法
1691
查看次数

与 dplyr 中的 data.table 不同

我正在尝试使用data.table以获得更好的性能,但不知道如何进行distinct %>% summarizein的等效操作dplyr。有什么想法可以使以下代码适应data.table吗?

group_by_('x,y,z') %>%
distinct('h', .keep_all = TRUE) %>%
summarise(tot1 = sum(value1), tot2 = sum(value2))
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table

1
推荐指数
1
解决办法
195
查看次数

标签 统计

r ×8

data.table ×4

duplicates ×4

unique ×2

bigdata ×1

dplyr ×1

duplicate-removal ×1