我有两个变量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
答案 0 :(得分:2)
您可以使用duplicated
来提供重复的值。您可以使用!
运算符
df[!duplicated(df$a), ]
# a amount
#1 112 12000
#3 113 14000
#4 114 18000
#6 115 19000
或者
您还可以将match
与unique
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)
或将summarise
与first
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