在给定特定条件的情况下,我有一个包含一些重复项的数据框,我想删除它。
我有一个列(column_A),其中包含分析结果。我的数据框中的一些ID有两个结果,这就是ID的重复发生的方式。如果“id_no”中的ID在column_A中同时包含“analysisA”和“analysisB”,我想将行保留在column_A ==“analyzeB”的行中,否则不要删除行。
(请注意,我运行的原始数据框有多个其他字符和数字列)
虚拟数据:
structure(list(id_no = structure(c(1L, 2L, 2L, 3L, 4L, 4L), .Label = c("A",
"B", "C", "D"), class = "factor"), column_A = structure(c(1L,
1L, 2L, 2L, 1L, 2L), .Label = c("analysisA", "analysisB"), class = "factor")), .Names = c("id_no",
"column_A"), row.names = c(NA, -6L), class = "data.frame")
看起来像这样:
id_no column_A
A analysisA
B analysisA
B analysisB
C analysisB
D analysisA
D analysisB
预期产出:
id_no column_A
A analysisA
B analysisB
C analysisB
D analysisB
有没有办法用dplyr做到这一点?我没有使用filter()进行条件过滤。
答案 0 :(得分:1)
这样做吗?
data.df%>%
group_by(id_no)%>%
mutate(analysis_count=1:n(),singleton=n()==1)%>%
ungroup()%>%
filter(singleton|analysis_count==2)%>%
select(-analysis_count, -singleton)
答案 1 :(得分:1)
在您的测试用例中,您基本上需要每个ID组的最后一项,以便使用tail
的以下data.table单行可用。
library(data.table)
dt[, tail(.SD,1), by=id_no]
将产生:
> dt[, tail(.SD,1), by=id_no]
id_no column_A
1: A analysisA
2: B analysisB
3: C analysisB
4: D analysisB
来源:
答案 2 :(得分:0)
我们可以使用insert into user (user_name,tel,password,isAdmin) VALUES ('dfd','555,' 443434','0')
base R
duplicated