我在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) 我有一个大于100列的数据框,我会通过只比较两列来找到唯一的行.我希望这是一个简单的,但我无法与它unique或duplicated我自己合作.
在下面,我想只使用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)
(我没有偏好保留哪些唯一行)
我正在从数据框和矩阵迁移到数据表,但还没有找到从数据表中提取唯一行的解决方案.[,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函数一样是未排序数据的结果?
我想删除基于在一个数据帧2列匹配重复值,v2及v4被删除行之间必须匹配.
> 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) 假设我们有
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中有一个数据集,如下所示:
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行,我必须使用什么?
我正在研究一个有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) 我正在尝试使用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)