首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

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
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41755241

复制
相关文章

相似问题

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