R:基于组和不同条件的数据帧子集

R:基于组和不同条件的数据帧子集,r,dplyr,subset,R,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

考虑一个数据帧:

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))
我想对数据帧进行子集,以便在果为苹果时保持rate为负值,果为橙色时保持rate为正值。i、 我期望的输出是

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
。但是,您可以使用
子集

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=data.frame(a=c(1,1,1,2,2,3),
b=c(“苹果”、“桔子”、“苹果”、“苹果”、“苹果”、“桔子”),
c=c(12,22,22,45,67,28),
d=c(“周一”、“周一”、“周一”、“周二”、“周三”、“周二”),
out=c(12,14,16,18,20,22),
比率=c(-0.01,-0.02,0.03,-0.04,0.07,0.06))
子数据(0))

代码非常简单。它将
数据子集化
以查找您的两个约束。在此代码中,
&
代表
,而
代表

这里有一个
dplyr
解决方案:

库(dplyr)
数据%>%
过滤器((b==“苹果”和比率<0)|(b==“橙子”和比率>0))
退房率
1苹果12星期一12-0.01
2苹果45星期二18-0.04
3个橙子28星期二22 0.06