我在R中有一个 Dataframe ,它看起来像:
| RIC | Date | Open |
|--------|---------------------|--------|
| S1A.PA | 2011-06-30 20:00:00 | 23.7 |
| ABC.PA | 2011-07-03 20:00:00 | 24.31 |
| EFG.PA | 2011-07-04 20:00:00 | 24.495 |
| S1A.PA | 2011-07-05 20:00:00 | 24.23 |
我想知道RIC和Date的组合是否有重复。在R中有这样的函数吗?
7条答案
按热度按时间xxslljrj1#
你总是可以尝试简单地将前两列传递给函数
duplicated
:假设您的 Dataframe 名为
dat
。有关更多信息,我们可以通过在控制台键入?duplicated
来查阅duplicated
函数的帮助文件。这将提供以下句子:确定向量或数据框的哪些元素是具有较小下标的元素的重复项,并返回一个逻辑向量,指示哪些元素(行)是重复项。
所以
duplicated
返回一个逻辑向量,然后我们可以使用它来提取dat
的子集:或者您可以跳过单独的赋值步骤,只需用途:
bt1cpqcv2#
dubir对这种事情更好:
(the“.keep_all是可选的。如果未使用,它将仅返回已消除重复数据的2列。使用时,它返回已消除重复数据的整个 Dataframe )
xxhby3vn3#
这里有一个
dplyr
选项,用于根据两个(或更多)列标记重复项。在这种情况下,ric
和date
:hmmo2u0o4#
获取所需信息的简单方法是使用
dplyr
。使用这个:
num_dups
告诉您特定组合重复的次数dup_id
告诉您特定行是哪个重复的数字(例如,第一、第二或第三等)is_duplicated
为您提供了一个简单的条件,您可以在稍后进行过滤以删除所有重复的行(例如,filter(!is_duplicated)
),不过你也可以使用dup_id
(例如,filter(dup_id == 1)
)chy5wohz5#
如果您希望根据datasetdata.frame中的列Date和State的值删除重复记录:
ffx8fchx6#
我认为您正在寻找的是一种以与原始数据相同的格式返回重复行的数据框的方法。可能有一种更优雅的方法来做到这一点,但这是有效的:
nbnkbykc7#
发现了Steve Lianouglou发布的一个非常巧妙的想法,它有助于解决这个问题,并具有索引重复的巨大优势:
如果生成一个
hash
列,该列连接要检查重复项的两个列,则可以使用dplyr::n()
和seq
为每个重复项给予索引,如下所示列
duplication_id
告诉你在你的表中有多少相同的行(两列的行值相同)在索引的上面。我用这个来删除重复的ID。