R 基于列变量删除第一行

R 基于列变量删除第一行,r,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) 谢谢。data.table是R中大型数据集的首选。setDT通过引用将z数据帧转换为数据表。按m分组并删除第一行 library('data.table

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

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)

谢谢。

data.table是R中大型数据集的首选。
setDT
通过引用将
z
数据帧转换为数据表。按
m
分组并删除第一行

library('data.table')
setDT(z)[, .SD[-1], by = "m"]

data.table优先用于R中的大型数据集。
setDT
通过引用将
z
数据帧转换为数据表。按
m
分组并删除第一行

library('data.table')
setDT(z)[, .SD[-1], by = "m"]

使用包装dplyr中的
分组依据
行编号

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

使用包装dplyr中的
分组依据
行编号

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

只需使用重复的

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

只需使用重复的

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

请参见
?duplicated
-即
duplicated(z$m)
为您提供了一个可用于选择的逻辑向量。我不确定我是否遵循了。这些条目不重复。请参见
?duplicated
-即
duplicated(z$m)
为您提供了一个可用于选择的逻辑向量。我不确定是否遵循。这些条目不是重复的。
z[z[,.I[-1],by=m]$V1]
可能是重复的faster@RichScriven-不久前,
.SD[n]
没有得到优化吗?是吗?我可能错过了。@RichScriven-我现在似乎找不到它的引用-可能是我想象出来的。
z[z[,.I[-1],by=m]$V1]
可能是faster@RichScriven-不久前,
.SD[n]
没有得到优化吗?是吗?我可能错过了。@RichScriven-我现在似乎找不到它的参照物-也许是我想象出来的。我不知道谁的dv'd,但这是辉煌的我不知道谁的dv'd,但这是辉煌的