首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在列中运行unique,以确保行按升序排列

如何在列中运行unique,以确保行按升序排列
EN

Stack Overflow用户
提问于 2018-01-12 15:32:39
回答 2查看 57关注 0票数 1

我有一个观察月份(升序)列和一个帐号列。我想运行unique/distinct,在其中我想要唯一的帐号,但要确保R所取的行是按升序排列的,作为观察月份。

代码语言:javascript
运行
复制
   Observation month A/C num

2010-09                 abc1
2010-10                 abc1
2010-11                  xyz

我希望unique只过滤出第一行,因为它是按升序排列的。我想在我的帐户编号列中运行unique,这样我就可以获得每个帐户的第一个条目

EN

回答 2

Stack Overflow用户

发布于 2018-01-12 15:58:49

像这样的东西?

代码语言:javascript
运行
复制
df <- read.table(text = "Observation_month A_C_num
                 2010-09                 abc1
                 2010-10                 abc1
                 2010-11                  xyz", header = T)

df_correct_order <- df[order(df$Observation_month), ]
df_without_duplicates <- df_correct_order[!duplicated(df_correct_order$A_C_num), ]
df_without_duplicates

> df_without_duplicates
  Observation_month A_C_num
1           2010-09    abc1
3           2010-11     xyz

编辑:

如果您更喜欢dplyr-solution:

代码语言:javascript
运行
复制
library(dplyr)
df %>% arrange(Observation_month) %>% distinct(A_C_num, .keep_all = T)
票数 1
EN

Stack Overflow用户

发布于 2018-01-12 16:14:51

操作员要求:

我希望unique只过滤出第一行,因为它是按升序排列的。我想在我的帐号列中运行unique,这样我就可以获得每个帐户的第一个条目

这可以转换为聚合任务

显示每个帐号的第一个观察月份,即最小月份

dplyr

库(Dplyr) DF %>% group_by(A.C.num) %>%摘要(Observation.month= min(Observation.month))

A tibble: 2 x 2 A.C.num Observation.month 1 abc1 2010-09 2 xyz 2010-11

data.table

代码语言:javascript
运行
复制
library(data.table)
setDT(DF)[, .(Observation.month = min(Observation.month)), by = A.C.num]

A.C.num Observation.month 1: abc1 2010-09 2: xyz 2010-11

数据

代码语言:javascript
运行
复制
library(data.table)
DF <- fread(
  "   Observation.month A.C.num
2010-09                 abc1
2010-10                 abc1
2010-11                  xyz")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48221554

复制
相关文章

相似问题

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