Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 删除重复的行值并保留行_R_Dplyr - Fatal编程技术网

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
with
mutate\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(.)
)))