有条件地删除R中的行

Swanny

我有一个数据,第一列是一堆ID数字(有些重复),第二列是一堆数字。我需要一种方法来根据第二列中的最小编号仅将每个ID编号保留一次。

Row#   ID   Number
1      10     180
2      12     167
3      12     182
4      12     135
5      15     152
6      15     133

例如:我只想保留第1、4和6行,然后删除其余的行

阿克伦

为了选择每个“ ID”组具有最小“ Number”的行,我们可以使用按组聚合功能之一。一个base R选项是aggregate使用aggregate,我们可以使用“公式”方法,也可以通过参数指定list分组元素/变量by使用该formula方法,我们min为每个“ ID”获得“ Number”值。

aggregate(Number~ID, df1, FUN=min)

或者,我们可以对使用更快的选项data.table在这里,我们将“ data.frame”转换为“ data.table”(setDT(df1)),并按“ ID”分组,得到min“ Number”值。

library(data.table)
setDT(df1)[, list(Number=min(Number)), by = ID] 

或者,这可以与也做setorderorder了“数”栏,并使用uniqueby选项,选择第一个非重复的“ID”行。(来自@David Arenburgs的评论)

 unique(setorder(setDT(df1), Number), by = "ID")

或使用dplyr,我们按“ ID”分组,并使用来获得子集行summarise

library(dplyr)
df1 %>%
   group_by(ID) %>%
   summarise(Number= min(Number))

或者我们可以使用sqldf语法来获取数据的子集。

library(sqldf)
sqldf('select ID,
        min(Number) as Number
        from df1 
        group by ID')

更新

如果有多列,并且您希望基于每个“ ID”的“ Number”的最小值来获取行,则可以使用which.min使用.I将获取行索引,并且可以用于子集行。

setDT(df1)[df1[,  .I[which.min(Number)], by = ID]$V1]

或者使用,dplyr我们slice可以过滤出min每个“ ID”值为“ Number”的行

df1 %>% 
    group_by(ID) %>%
    slice(which.min(Number))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SSRS有条件地从表中删除行

来自分类Dev

如何有条件地在熊猫中删除行

来自分类Dev

有条件地从R中的data.table中删除行

来自分类Dev

有条件地从R中的data.table中删除行

来自分类Dev

R:有条件地删除矩阵中的行和列

来自分类Dev

在R中删除有条件的行

来自分类Dev

使用data.table根据R中的B列有条件地删除A列中匹配的行

来自分类Dev

使用data.table根据R中的B列,有条件地删除A列中匹配的行

来自分类Dev

有条件地删除重复的行-啄顺序

来自分类Dev

有条件地删除第一行

来自分类Dev

从 Pandas datafrmae 的开头有条件地删除行

来自分类Dev

R 有条件地删除数据框

来自分类Dev

在R中没有if语句的情况下有条件地从向量中删除

来自分类Dev

根据所有列的值有条件地删除熊猫中的行

来自分类Dev

有条件地从数据框中删除

来自分类Dev

有条件地删除向量中的元素

来自分类Dev

有条件地在Redshift中删除临时表

来自分类Dev

有条件地删除向量中的元素

来自分类Dev

有条件地删除Powershell中的DataTable Row?

来自分类Dev

有条件地在angularjs中添加/删除属性

来自分类Dev

有条件地删除 Pandas 中的重复条目

来自分类Dev

迭代和有条件地删除文件中的行

来自分类Dev

有条件地删除数据框中的行

来自分类Dev

熊猫-比较行中的列ID并有条件地删除

来自分类Dev

有条件地删除shell脚本中的新行

来自分类Dev

有条件地从文件中删除一行

来自分类Dev

有条件地删除宏

来自分类Dev

有条件地删除R中向量元素的字符

来自分类Dev

在R中有条件地从文本文件中删除换行符