R 如何在数据框中创建唯一的行
我有一个重复行的数据帧。我需要从中创建唯一的行。我试过几种选择,但似乎不起作用R 如何在数据框中创建唯一的行,r,dplyr,R,Dplyr,我有一个重复行的数据帧。我需要从中创建唯一的行。我试过几种选择,但似乎不起作用 l1 <-summarise(group_by(l,bowler,wickets),economyRate,d=unique(date)) 日期是唯一的,可用于获取可选择行的行。请让我知道如何做到这一点 在示例数据集中,每个“bowler”、“wickets”组合都有多个唯一的日期元素。一个选项是将唯一的日期粘贴在一起 l %>% group_by(bowler, wickets) %>
l1 <-summarise(group_by(l,bowler,wickets),economyRate,d=unique(date))
日期是唯一的,可用于获取可选择行的行。请让我知道如何做到这一点 在示例数据集中,每个“bowler”、“wickets”组合都有多个
唯一的日期元素。一个选项是将唯一的日期粘贴在一起
l %>%
group_by(bowler, wickets) %>%
summarise(economyRate= mean(economyRate), d = toString(unique(date)))
或者将“d”创建为列表
列
l %>%
group_by(bowler, wickets) %>%
summarise(economyRate= mean(economyRate), d = list(unique(date)))
关于“economyRate”,我猜OP需要它的平均值
如果我们需要在原始数据集中创建一列unique
date,请使用mutate
l %>%
group_by(bowler, wickets) %>%
mutate(d = list(unique(date)))
由于OP没有提供预期的输出,下面可能也是结果
l %>%
group_by(bowler, wickets) %>%
distinct(date)
或者像@Frank提到的那样
l %>%
group_by(bowler,wickets,date) %>%
slice(1L)
在示例数据集中,每个“bowler”、“wickets”组合都有多个唯一的日期元素。一个选项是将唯一的日期粘贴在一起
l %>%
group_by(bowler, wickets) %>%
summarise(economyRate= mean(economyRate), d = toString(unique(date)))
或者将“d”创建为列表
列
l %>%
group_by(bowler, wickets) %>%
summarise(economyRate= mean(economyRate), d = list(unique(date)))
关于“economyRate”,我猜OP需要它的平均值
如果我们需要在原始数据集中创建一列unique
date,请使用mutate
l %>%
group_by(bowler, wickets) %>%
mutate(d = list(unique(date)))
由于OP没有提供预期的输出,下面可能也是结果
l %>%
group_by(bowler, wickets) %>%
distinct(date)
或者像@Frank提到的那样
l %>%
group_by(bowler,wickets,date) %>%
slice(1L)
所以,我采取了一种不寻常的方法来做这个手术,但是当日期从我创建的csv文件中传过来时,我让它仍然是一个因素。您可以轻松地将日期列转换为具有
l1$date<-as.factor(l1$date)
在这之后,它是关于确保在最简洁的查询中正确使用子设置语法:
l2<-l1[!duplicated(l1$date),]
唯一需要注意的是在后面保留逗号!重复(l1$date)
以确保搜索所有列并将其包含在最终子集中
如果您想要日期或字符,您可以as.POSIXct
或as.character
将它们转换为一种可用的格式,以便在接下来的操作中使用
我希望这对你有用 所以,我采取了一种不寻常的方式来做这个手术,但是当日期从我创建的csv文件中传过来时,我让它仍然是一个因素。您可以轻松地将日期列转换为具有
l1$date<-as.factor(l1$date)
在这之后,它是关于确保在最简洁的查询中正确使用子设置语法:
l2<-l1[!duplicated(l1$date),]
唯一需要注意的是在后面保留逗号!重复(l1$date)
以确保搜索所有列并将其包含在最终子集中
如果您想要日期或字符,您可以as.POSIXct
或as.character
将它们转换为一种可用的格式,以便在接下来的操作中使用
我希望这对你有用 如果我正确理解了操作的意图,他只是要求删除重复的行。所以,我会使用
unique(l1)
这就是?unique
所说的:
unique返回向量、数据帧或数组,如x,但删除了重复的元素/行
如果我没有弄错,他只是要求删除重复的行。所以,我会使用
unique(l1)
这就是?unique
所说的:
unique返回向量、数据帧或数组,如x,但删除了重复的元素/行
资料
l数据
l这是因为summary
为每个组的组合返回一个值。如果组合中有多个唯一日期,则会导致不平衡。最好发布示例数据和预期输出的dput。dplyr的作者正在考虑做一个扩展来支持这一点(akrun所说的),看起来是这样的:请提供创建示例data.frame的代码并回答您的问题好吗?这将允许轻松测试答案的正确性,而不会加重海报重新创建数据的负担。-谢谢,这是因为summary
为每个组的组合返回一个值。如果组合中有多个唯一日期,则会导致不平衡。最好发布示例数据和预期输出的dput。dplyr的作者正在考虑做一个扩展来支持这一点(akrun所说的),看起来是这样的:请提供创建示例data.frame的代码并回答您的问题好吗?这将允许轻松测试答案的正确性,而不会加重海报重新创建数据的负担。-谢谢使用dplyr::distinct
只保留相似的行。但是它在这里不起作用。@PaulRougieux在基函数上使用dplyr
的好处是什么unique
?请参见?distinct,您可以指定“确定唯一性时使用的变量”。例如a谢谢,我不知道dplyr::distinct
。看起来像是dplyr
等效于data.table::unique(a,by=“i”)
。使用dplyr::distinct
仅保留相似的行。但是它在这里不起作用。@PaulRougieux在基函数上使用dplyr
的好处是什么unique
?请参见?distinct,您可以指定“确定唯一性时使用的变量”。例如a谢谢,我不知道dplyr::distinct
。看起来像是dplyr
相当于data.table::unique(a,by=“i”)
。谢谢@akrun!这就是我想要的。我最终使用了以下代码l1%group_by(bowler、wickets、economyRate)%%>%distinct(date)谢谢@akrun!这就是我想要的。我最终使用以下代码l1%group_by(bowler、wickets、economyRate)%>%distinct(日期)