R 删除重复的行值并保留行
我在数据框中有重复的行。我需要删除重复的行值并只保留其中一个,但保留行本身 尝试使用R 删除重复的行值并保留行,r,dplyr,R,Dplyr,我在数据框中有重复的行。我需要删除重复的行值并只保留其中一个,但保留行本身 尝试使用复制的、不同的或唯一的不允许保留行 S.No Rate Proportion Control C11 50 0.9 A C11 50 0.9 B C11 50 0.9 A C21 40 0.8 B C21 40 0.8 A C21 40 0.8
复制的
、不同的
或唯一的
不允许保留行
S.No Rate Proportion Control
C11 50 0.9 A
C11 50 0.9 B
C11 50 0.9 A
C21 40 0.8 B
C21 40 0.8 A
C21 40 0.8 A
试试看
没错,不清楚条件,但你可以试试
library(dplyr)
df %>%
group_by(S.No) %>%
mutate_at(2:3, ~replace(., row_number() != n(),''))
#OR
#mutate_at(vars(Rate,Proportion), ~replace(., row_number() != n(),''))
# S.No Rate Proportion Control
# <chr> <chr> <chr> <chr>
#1 C11 "" "" A
#2 C11 "" "" B
#3 C11 50 0.9 A
#4 C21 "" "" B
#5 C21 "" "" A
#6 C21 40 0.8 A
在
dplyr
中执行此操作的另一种方法:
df %>% group_by(S.No) %>% mutate_at(2:3, .funs = funs( . = case_when(
n() != row_number() ~ "",
TRUE ~ as.character(.)
)))
非常感谢
dplyr
withmutate\u at
非常有效。@BalachandarKaliappan你为什么不接受这个答案?这是第一篇文章,包括两种实现你需要的方法。我先试用了他的代码,然后又试用了你的代码。然而,它们都值得接受。但是,这里没有机会这么做。@BalachandarKaliappan这不是我的代码,我的代码在下面。我只是觉得这个答案更值得勾选,同时尊重和承认其他海报的贡献。
library(dplyr)
df %>%
mutate_at(vars(2:3), funs(replace(., duplicated(., fromLast = TRUE), '')))
library(dplyr)
df %>%
group_by(S.No) %>%
mutate_at(2:3, ~replace(., row_number() != n(),''))
#OR
#mutate_at(vars(Rate,Proportion), ~replace(., row_number() != n(),''))
# S.No Rate Proportion Control
# <chr> <chr> <chr> <chr>
#1 C11 "" "" A
#2 C11 "" "" B
#3 C11 50 0.9 A
#4 C21 "" "" B
#5 C21 "" "" A
#6 C21 40 0.8 A
df <- structure(list(S.No = c("C11", "C11", "C11", "C21", "C21", "C21"
), Rate = c(50L, 50L, 50L, 40L, 40L, 40L), Proportion = c(0.9,
0.9, 0.9, 0.8, 0.8, 0.8), Control = c("A", "B", "A", "B", "A",
"A")), class = "data.frame", row.names = c(NA, -6L))
df %>% group_by(S.No) %>% mutate_at(2:3, .funs = funs( . = case_when(
n() != row_number() ~ "",
TRUE ~ as.character(.)
)))