我有一个观察月份(升序)列和一个帐号列。我想运行unique/distinct,在其中我想要唯一的帐号,但要确保R所取的行是按升序排列的,作为观察月份。
Observation month A/C num
2010-09 abc1
2010-10 abc1
2010-11 xyz
我希望unique只过滤出第一行,因为它是按升序排列的。我想在我的帐户编号列中运行unique,这样我就可以获得每个帐户的第一个条目
发布于 2018-01-12 15:58:49
像这样的东西?
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:
library(dplyr)
df %>% arrange(Observation_month) %>% distinct(A_C_num, .keep_all = T)
发布于 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
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
数据
library(data.table)
DF <- fread(
" Observation.month A.C.num
2010-09 abc1
2010-10 abc1
2010-11 xyz")
https://stackoverflow.com/questions/48221554
复制相似问题