相关疑难解决方法(0)

使用dplyr删除重复的行

我有一个像这样的data.frame -

set.seed(123)
df = data.frame(x=sample(0:1,10,replace=T),y=sample(0:1,10,replace=T),z=1:10)
> df
   x y  z
1  0 1  1
2  1 0  2
3  0 1  3
4  1 1  4
5  1 0  5
6  0 1  6
7  1 0  7
8  1 0  8
9  1 0  9
10 0 1 10
Run Code Online (Sandbox Code Playgroud)

我想根据前两列删除重复的行.预期产量 -

df[!duplicated(df[,1:2]),]
  x y z
1 0 1 1
2 1 0 2
4 1 1 4
Run Code Online (Sandbox Code Playgroud)

我正在寻找使用dplyr包的解决方案.

r dplyr

113
推荐指数
4
解决办法
9万
查看次数

过滤基于row_number()的data.frame

更新:自问这个问题以来,dplyr已经更新,现在按照OP的要求执行

我正尝试获得第二至第七行中data.frame使用dplyr.

我这样做:

require(dplyr)
df <- data.frame(id = 1:10, var = runif(10))
df <- df %>% filter(row_number() <= 7, row_number() >= 2)
Run Code Online (Sandbox Code Playgroud)

但这会引发错误.

Error in rank(x, ties.method = "first") : 
  argument "x" is missing, with no default
Run Code Online (Sandbox Code Playgroud)

我知道我可以轻松制作:

df <- df %>% mutate(rn = row_number()) %>% filter(rn <= 7, rn >= 2)
Run Code Online (Sandbox Code Playgroud)

但我想明白为什么我的第一次尝试不起作用.

r dplyr

37
推荐指数
3
解决办法
4万
查看次数

如何在dplyr中变异而不会丢失顺序?

使用data.table我可以执行以下操作:

library(data.table)
dt = data.table(a = 1:2, b = c(1,2,NA,NA))
#   a  b
#1: 1  1
#2: 2  2
#3: 1 NA
#4: 2 NA

dt[, b := b[1], by = a]
#   a b
#1: 1 1
#2: 2 2
#3: 1 1
#4: 2 2
Run Code Online (Sandbox Code Playgroud)

dplyr然而,尝试相同的操作,数据被加扰/排序a:

library(dplyr)
dt = data.table(a = 1:2, b = c(1,2,NA,NA))
dt %.% group_by(a) %.% mutate(b = b[1])
#  a b
#1 1 1
#2 1 1
#3 2 …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table

7
推荐指数
1
解决办法
660
查看次数

标签 统计

dplyr ×3

r ×3

data.table ×1