【问题标题】:How do you subset a data frame that has different values for the same two columns in R如何对 R 中相同两列具有不同值的数据框进行子集化
【发布时间】:2014-11-17 21:08:10
【问题描述】:

我有这个数据框:

输入(df)

structure(list(Metrics = c("db1.Tablespace_Space_Used_(%)", "db1.Tablespace_Space_Used_(%)", 
"db1.Tablespace_Space_Used_(%)", "db1.Tablespace_Space_Used_(%)", 
"db2.Tablespace_Space_Used_(%)", "db2.Tablespace_Space_Used_(%)", 
"db1.Tablespace_Space_Used_(%)", "db2.Tablespace_Space_Used_(%)", 
"db1.Tablespace_Space_Used_(%)", "db2.Tablespace_Space_Used_(%)", 
"db2.Tablespace_Space_Used_(%)", "db2.Tablespace_Space_Used_(%)", 
"db2.Tablespace_Space_Used_(%)", "db1.Tablespace_Space_Used_(%)", 
"db1.Tablespace_Space_Used_(%)", "db1.Tablespace_Space_Used_(%)", 
"db1.Tablespace_Space_Used_(%)", "db1.Tablespace_Space_Used_(%)", 
"db1.Tablespace_Space_Used_(%)", "db1.Tablespace_Space_Used_(%)"
), Date = c(1416257563.98707, 1416257563.98707, 1416257563.98707, 
1416257563.98707, 1416257563.98707, 1416257563.98707, 1416257563.98707, 
1416257563.98707, 1416257563.98707, 1416257563.98707, 1416257563.98707, 
1416257563.98707, 1416257563.98707, 1416257563.98707, 1416257563.98707, 
1416257563.98707, 1416257563.98707, 1416257563.98707, 1416257563.98707, 
1416257563.98707), Value = c(0, 0.02, 0.01, 0, 0.01, 0.01, 0.07, 
0, 2.02, 0, 0, 9.32, 0.02, 9.27, 0, 12.72, 12.72, 12.72, 0.08, 
12.72), Type1 = c("type=rac_database", "type=rac_database", "type=rac_database", 
"type=rac_database", "type=rac_database", "type=rac_database", 
"type=rac_database", "type=rac_database", "type=rac_database", 
"type=rac_database", "type=rac_database", "type=rac_database", 
"type=rac_database", "type=rac_database", "type=rac_database", 
"type=rac_database", "type=rac_database", "type=rac_database", 
"type=rac_database", "type=rac_database")), .Names = c("Metrics", 
"Date", "Value", "Type1"), class = "data.frame", row.names = c(10092L, 
10097L, 10103L, 10104L, 10107L, 10108L, 10111L, 10112L, 10114L, 
10115L, 10116L, 10117L, 10118L, 10120L, 10121L, 10188L, 10189L, 
10190L, 10192L, 10216L))

这是更大数据框的子集。如您所见,对于相同的 Metrics 和 Date,有多个不同的值。我希望能够只为相同的数据和指标类型选择最大值。因此,对于相同的日期和指标,我应该只有一个值,它应该是最大点。任何想法,我如何子集这个 df?

例如,对于 Metrics:db1.Tablespace_Space_Used_(%) 和 Date:1416257564

在我的 df 中,我应该有一个条目:

 db1.Tablespace_Space_Used_(%) 1416257564 12.72 type=rac_database

【问题讨论】:

    标签: r


    【解决方案1】:

    与此处给出的答案相同 Finding maximum value of one column (by group) and inserting value into another data frame in R

    假设你的数据框被称为df

    df_1 <- aggregate(Value ~ Metrics + Date + Type1, df, max)
    df_1
    #edit: removed 'cbind'
    

    输出

                            Metrics       Date             Type1 Value
    1 db1.Tablespace_Space_Used_(%) 1416257564 type=rac_database 12.72
    2 db2.Tablespace_Space_Used_(%) 1416257564 type=rac_database  9.32
    

    【讨论】:

      【解决方案2】:

      这个怎么样:

      > # find the maximum for Value for each combination of Metrics and Date
      > df2 <- aggregate(df$Value, by=list(Metrics=df$Metrics, Date=df$Date), max)
      > colnames(df2)[3] <- "Value"
      
      > # add the corresponding value for Type1
      > df2$Type1 <- df[df$Metrics == df2$Metrics & df$Date == df2$Date & df$Value == df2$Value, "Type1"]
      
      > # result
      > df2
                              Metrics       Date Value             Type1
      1 db1.Tablespace_Space_Used_(%) 1416257564 12.72 type=rac_database
      2 db2.Tablespace_Space_Used_(%) 1416257564  9.32 type=rac_database
      

      【讨论】:

        猜你喜欢
        • 2021-08-24
        • 1970-01-01
        • 1970-01-01
        • 2020-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-14
        • 1970-01-01
        相关资源
        最近更新 更多