簡體   English   中英

R:根據組和不同條件對數據框進行分組

[英]R: Subset a dataframe based on group and different conditions

考慮一個數據幀:

data = data.frame(a=c(1,1,1,2,2,3),
              b=c("apples", "oranges", "apples", "apples", "apples", "oranges"),
              c=c(12, 22, 22, 45, 67, 28), 
              d=c("Monday", "Monday", "Monday", "Tuesday", "Wednesday", "Tuesday"),
              out = c(12, 14, 16, 18, 20, 22),
              rate = c(-0.01, -0.02, 0.03, -0.04, 0.07, 0.06))

我想對數據幀進行子集化,以在水果為蘋果時為負時保持值,而在水果為橙色時為正時保持值。 即我想要的輸出是

data = data.frame(a=c(1,2,3),
              b=c("apples", "apples", "oranges"),
              c=c(12, 45, 28), 
              d=c("Monday", "Tuesday", "Tuesday"),
              out = c(12, 18, 22),
              rate = c(-0.01, -0.04, 0.06))

有辦法嗎?

這是dplyr解決方案:

library(dplyr)
data %>% 
  filter((b == "apples" & rate < 0) | (b == "oranges" & rate > 0))

  a       b  c       d out  rate
1 1  apples 12  Monday  12 -0.01
2 2  apples 45 Tuesday  18 -0.04
3 3 oranges 28 Tuesday  22  0.06

我不知道如何處理dplyr 但是,您可以使用subset輕松地執行此操作

data = data.frame(a=c(1,1,1,2,2,3),
              b=c("apples", "oranges", "apples", "apples", "apples", "oranges"),
              c=c(12, 22, 22, 45, 67, 28), 
              d=c("Monday", "Monday", "Monday", "Tuesday", "Wednesday", "Tuesday"),
              out = c(12, 14, 16, 18, 20, 22),
              rate = c(-0.01, -0.02, 0.03, -0.04, 0.07, 0.06))

subData <- subset(data, (b == "apples" & rate < 0) | (b == "oranges" & rate > 0))

代碼很簡單。 它對尋找您的兩個約束的data進行了子集化。 在此代碼中, &代表and while | 代表or

暫無
暫無

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

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