【问题标题】:How to remove values in a column based on other column values equaling the column values above it?如何根据等于其上方列值的其他列值删除列中的值?
【发布时间】:2021-12-04 00:49:52
【问题描述】:

我目前正在使用 R 编码并将两个数据帧合并在一起,因此我可以将所有信息包含在一起,但我不希望将一列“成本”重复多次(这是由于最后一列的唯一值3 列)。我希望它仅在第一列中包含成本 100,然后对于“状态”、“市场”、“日期”和“成本”列与上述相同的所有其他实例。我附上了数据框的外观以及我希望将其更改为的内容。谢谢!

目前的样子

它应该是什么样子

【问题讨论】:

  • 如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。图片不是共享数据/代码的正确方式。

标签: r dataframe merge


【解决方案1】:

Date 列是不同的,所以我认为您想要为 StateMarket 组合的每个值替换重复的 Cost

library(dplyr)

df <- df %>%
  group_by(State, Market) %>%
  mutate(Cost = replace(Cost, duplicated(Cost), NA)) %>%
  ungroup

df

#  State Market  Date        Cost Word    format Type              
#  <chr> <chr>   <chr>      <dbl> <chr>   <chr>  <chr>             
#1 AZ    Phoenix 10-20-2020   100 HELLO   AM     Sports related    
#2 AZ    Phoenix 10-21-2020    NA GOODBYE PM     Non Sports related
#3 AZ    Phoenix 10-22-2020    NA YES     FM     Country           
#4 AZ    Phoenix 10-23-2020    NA NONE    CM     Rock          

数据

如果您在reproducible format 中提供数据会更容易提供帮助

df <- structure(list(State = c("AZ", "AZ", "AZ", "AZ"), Market = c("Phoenix", 
"Phoenix", "Phoenix", "Phoenix"), Date = c("10-20-2020", "10-21-2020", 
"10-22-2020", "10-23-2020"), Cost = c(100, 100, 100, 100), Word = c("HELLO", 
"GOODBYE", "YES", "NONE"), format = c("AM", "PM", "FM", "CM"), 
    Type = c("Sports related", "Non Sports related", "Country", 
    "Rock")), row.names = c(NA, -4L), class = "data.frame")

【讨论】:

    【解决方案2】:

    这是一个使用重复数据框 (df) 的解决方案

         State  Market    Date Cost    Word format               Type
    1    AZ Phoenix 10-20-2020  100   HELLO     AM     Sports related
    2    AZ Phoenix 10-21-2020   NA GOODBYE     PM Non Sports related
    3    AZ Phoenix 10-22-2020   NA     YES     FM            Country
    4    AZ Phoenix 10-23-2020   NA    NONE     CM               Rock
    

    将重复设置为 NA

    df$Cost[duplicated(df$Cost)] <- NA
    

    输出:

      State  Market       Date Cost    Word format               Type
    1    AZ Phoenix 10-20-2020  100   HELLO     AM     Sports related
    2    AZ Phoenix 10-21-2020   NA GOODBYE     PM Non Sports related
    3    AZ Phoenix 10-22-2020   NA     YES     FM            Country
    4    AZ Phoenix 10-23-2020   NA    NONE     CM               Rock
    

    【讨论】:

      【解决方案3】:

      请使用本例中的索引:

      name_of_your_dataset[nrow_init:nrow_fin, ncol] <- NA
      

      在您的情况下,假设您的数据集名称为“数据”

      data[2:4,4]<- NA
      

      只要留下一个积极的反馈,如果我有用,就给这个答案投票。

      【讨论】:

        猜你喜欢
        • 2021-09-25
        • 1970-01-01
        • 2021-08-09
        • 2021-10-19
        • 1970-01-01
        • 2022-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多