簡體   English   中英

如何為R中的相同兩列子集具有不同值的數據框

[英]How do you subset a data frame that has different values for the same two columns in R

我有這個數據框:

dput(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))

這是更大數據幀的子集。 如您所見,對於相同的指標和日期,存在多個不同的值。 我只想為相同的數據和指標類型選擇最大值。 因此,對於相同的日期和指標,我應該只有一個值為最大點的值。 任何想法,我怎么能子集這個df?

例如,對於度量標准:db1.Tablespace_Space_Used _(%)和日期:1416257564

在我的df中,我應該有一個條目:

 db1.Tablespace_Space_Used_(%) 1416257564 12.72 type=rac_database

與此處給出的答案相同。 查找一列的最大值(按組)並將值插入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

這個怎么樣:

> # 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM