每个值的第一行出现

时间:2016-05-13 04:52:03

标签: r

我有两个变量a和数量按

排序
a      amount

112    12000 
112    15000 
113    14000
114    18000
114    17000 
115    19000 
115    17000

我想要变量

中每个值的第一行出现
output 

 a    amount
112  12000
113  14000
114  18000
115  19000 

2 个答案:

答案 0 :(得分:2)

您可以使用duplicated来提供重复的值。您可以使用!运算符

忽略它们
df[!duplicated(df$a), ]


#   a amount
#1 112  12000
#3 113  14000
#4 114  18000
#6 115  19000

或者

您还可以将matchunique

一起使用
df[match(unique(df$a), df$a), ]

#   a amount
#1 112  12000
#3 113  14000
#4 114  18000
#6 115  19000

答案 1 :(得分:0)

我们可以使用

library(data.table)
setDT(df1)[, head(.SD, 1), by = a]

或快速变体(由@Symbolix提供)

setDT(df1)[df1[, .I[1L], by = a]$V1]

或使用unique

unique(setDT(df1), by = "a")
#    a amount
#1: 112  12000
#2: 113  14000
#3: 114  18000
#4: 115  19000

或者

library(dplyr)
df1 %>%
    group_by(a) %>%
    slice(1)

或将summarisefirst

一起使用
df1 %>%
   group_by(a) %>% 
   summarise(amount = first(amount))

base R

aggregate(.~a, df1, head, 1)
#    a amount
#1 112  12000
#2 113  14000
#3 114  18000
#4 115  19000
相关问题