首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将重复元素和整个数据帧保持在r中。

将重复元素和整个数据帧保持在r中。
EN

Stack Overflow用户
提问于 2017-01-20 02:44:28
回答 3查看 291关注 0票数 1

我希望根据第一列中的重复元素删除行,但也希望保留第二列。与第二列中的重复元素相关联的任何值。

输入:

代码语言:javascript
复制
df = data.frame(col1 = c("a", "a", "a", "b", "b", "c"), col2 = 1:6)

预期产出:

代码语言:javascript
复制
col1 col2
a    1
b    4

或,

代码语言:javascript
复制
col1 col2
    a    2
    b    5

等。

到目前为止,使用以下命令进行了尝试,但没有保留整个数据帧:

代码语言:javascript
复制
df[(duplicated(df$col1)),] 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-20 04:30:58

使用dplyr,我们可以使用group_by col1,然后只包含那些多次发生的组,并使用slice逐行获取第一行。

代码语言:javascript
复制
library(dplyr)
df %>%
   group_by(col1) %>%
   filter(n() > 1) %>%
   slice(1)

#   col1  col2
#  <fctr> <int>
#1   a     1
#2   b     4

从每一组中得到第二排

代码语言:javascript
复制
df %>%
  group_by(col1) %>%
  filter(n() > 1) %>%
  slice(2)

#    col1  col2
#    <fctr> <int>
#1      a     2
#2      b     5

我们还可以在row_number中使用dplyr函数

代码语言:javascript
复制
df %>%
  group_by(col1) %>%
  filter(n() > 1) %>%
  filter(row_number() == 1)
票数 2
EN

Stack Overflow用户

发布于 2017-01-20 02:53:58

以下是你想做的事:

代码语言:javascript
复制
> df = data.frame(col1 = c("a", "a", "a", "b", "b", "c"), col2 = 1:6)
> t <- table(df[,1])
> df[match(names(t[t>1]),df[,1]),]
  col1 col2
1    a    1
4    b    4

简短说明:table(...)计算每个元素在第一列中的次数。names(t[t>1])只选择至少出现两次的元素,而match(...)给出了所述元素的(第一个)索引。最后,选择与这些索引对应的行。

票数 2
EN

Stack Overflow用户

发布于 2017-01-20 03:31:13

我们可以用data.table来做这件事。将'data.frame‘转换为'data.table’(setDT(df)),按'col1‘分组,if行数大于1,得到第一行

代码语言:javascript
复制
library(data.table)
setDT(df)[, if(.N>1) head(.SD, 1) , col1]
#   col1 col2
#1:    a    1
#2:    b    4

如果我们需要第二个值

代码语言:javascript
复制
setDT(df)[, if(.N>1) .SD[2] , col1]
#   col1 col2
#1:    a    2
#2:    b    5

或者使用dplyr

代码语言:javascript
复制
library(dplyr)
df %>%
   group_by(col1) %>%
   filter(n()>1 & row_number()==1)
#   col1  col2
#  <fctr> <int>
#1      a     1
#2      b     4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41755241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档