首页 > 解决方案 > 删除一系列重复值

问题描述

我已将多个 Excel 工作表合并到一个数据框中,但 stock_code 列中的某些值重复,例如:X 公司的值从 01-01-2009 到 31-12-2020,但此范围内的值重复:(因为对于同一家公司,至少有两个 excel 文件具有相同的值)

> head(data,3)
# A tibble: 3 x 4
   tarih             stock_code       adj_close_price
  <dttm>              <chr>                <dbl>
1  2020-03-31 00:00:00 X                 2.87
2  2020-03-30 00:00:00 X               2.69
3  2020-03-27 00:00:00 X                 2.69
> tail(data,3)
# A tibble: 3 x 4
          tarih        stock_code       adj_close_price
         <dttm>          <chr>           <dbl>
1 2009-01-06 00:00:00  X                0.136
2  2009-01-05 00:00:00 X                0.129
3  2009-01-02 00:00:00 X               0.124

看起来不错,从 2009 年到 2020 年,然后再次显示从 2009 年到 2020 年的相同值(如顶部所示)。

我无法过滤它,因为我不想删除整个公司,但我只想删除公司的重复范围

这是我合并文件的方式,也许我应该添加一个条件以避免某种重复值?

xlsx_files <- c("düzelt1.xlsx",
                "düzelt2.xlsx",
                "düzelt3.xlsx",
                "düzelt4.xlsx",
                "düzelt5.xlsx",
                "düzelt6.xlsx",
                "düzelt7.xlsx",
                "düzelt8.xlsx")

dataframes &lt;- lapply(xlsx_files, function(x) 
    read_excel(path = paste0("~/weekly_stock/", x)))

df <- do.call("rbind", dataframes)

tail(df)

files <- list.files(path = "~/weekly_stock", pattern = "*.xlsx", full.names = T)

weekly_stock <- sapply(files, read_excel, simplify=FALSE) %>% 
    bind_rows(.id = "id")

感谢并感谢您的回复。

标签: rexceldplyr

解决方案


您可以使用仅保留for eachdistinct的唯一值。tarihstock_code

library(dplyr)

weekly_stock <- sapply(files, read_excel, simplify=FALSE) %>% 
  bind_rows(.id = "id") %>%
  distinct(stock_code, tarih, .keep_all = TRUE)

推荐阅读