如何删除每个新变量的第一行?例如,以下是一些数据:
m <- c("a","a","a","a","a","b","b","b","b","b")
n <- c('x','y','x','y','x','y',"x","y",'x',"y")
o <- c(1:10)
z <- data.frame(m,n,o)
我想删除m列中a和b的第一个条目。我有一个非常大的数据框,所以我想根据从a到b的变化等来做这个。
这就是我想要数据框的样子。
m n o
1 a y 2
2 a x 3
3 a y 4
4 a x 5
5 b x 7
6 b y 8
7 b x 9
8 b y 10
感谢。
答案 0 :(得分:6)
只需使用duplicated
:
z[duplicated(z$m),]
# m n o
#2 a y 2
#3 a x 3
#4 a y 4
#5 a x 5
#7 b x 7
#8 b y 8
#9 b x 9
#10 b y 10
为什么会这样?考虑:
duplicated("a")
#[1] FALSE
duplicated(c("a","a"))
#[1] FALSE TRUE
答案 1 :(得分:4)
data.table首选R中的大型数据集。setDT
通过引用将z
数据框转换为数据表。按m
分组并删除第一行。
library('data.table')
setDT(z)[, .SD[-1], by = "m"]
答案 2 :(得分:1)
使用包dplyr中的group_by
和row_number
:
z %>%
group_by(m) %>%
filter(row_number(o)!=1)