根据列变量删除第一行

时间:2017-03-16 23:48:27

标签: r

如何删除每个新变量的第一行?例如,以下是一些数据:

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

感谢。

3 个答案:

答案 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_byrow_number

z %>% 
  group_by(m) %>%
  filter(row_number(o)!=1)