如果达到变量限制,如何过滤(使用 dplyr)组的所有值?
How to filter (with dplyr) for all values of a group if variable limit is reached?
这是虚拟数据:
cases <- rep(1:5,times=2)
var1 <- as.numeric(c(450,100,250,999,200,500,980,10,700,1000))
var2 <- as.numeric(c(111,222,333,444,424,634,915,12,105,152))
maindata1 <- data.frame(cases,var1,var2)
df1 <- maindata1 %>%
filter(var1 >950) %>%
distinct(cases) %>%
select(cases)
table1 <- maindata1 %>%
filter(cases == 2 | cases == 4 | cases == 5) %>%
arrange(cases)
> table1
cases var1 var2
1 2 100 222
2 2 980 915
3 4 999 444
4 4 700 105
5 5 200 424
6 5 1000 152
我正在尝试制定一个数据框,其中包含与 var1 >950 的情况相关的所有数据,因此它将显示这些情况下 var1 的每个值(以及那些 <950 的值)和 var2 的所有值并且会放弃 var1 不会达到 >950 的所有情况。 Table1 生成了所需的数据框,但我必须手动输入过滤条件。有没有办法使用 df1$cases 作为过滤条件来提取相同的数据帧作为结果?
我是 R 的新手,主要尝试使用 dplyr 学习数据操作,因为外行人几乎可以理解它的语法。所以如果有人可以提供基于 dplyr 的解决方案那太棒了,我当然也愿意听取基于其他软件包的解决方案。
在 cases
定义的每个组中按 max(var1)
过滤:
maindata1 %>%
group_by(cases) %>%
filter(max(var1) > 950) %>%
arrange(cases)
# cases var1 var2
# 1 2 100 222
# 2 2 980 915
# 3 4 999 444
# 4 4 700 105
# 5 5 200 424
# 6 5 1000 152
这是虚拟数据:
cases <- rep(1:5,times=2)
var1 <- as.numeric(c(450,100,250,999,200,500,980,10,700,1000))
var2 <- as.numeric(c(111,222,333,444,424,634,915,12,105,152))
maindata1 <- data.frame(cases,var1,var2)
df1 <- maindata1 %>%
filter(var1 >950) %>%
distinct(cases) %>%
select(cases)
table1 <- maindata1 %>%
filter(cases == 2 | cases == 4 | cases == 5) %>%
arrange(cases)
> table1
cases var1 var2
1 2 100 222
2 2 980 915
3 4 999 444
4 4 700 105
5 5 200 424
6 5 1000 152
我正在尝试制定一个数据框,其中包含与 var1 >950 的情况相关的所有数据,因此它将显示这些情况下 var1 的每个值(以及那些 <950 的值)和 var2 的所有值并且会放弃 var1 不会达到 >950 的所有情况。 Table1 生成了所需的数据框,但我必须手动输入过滤条件。有没有办法使用 df1$cases 作为过滤条件来提取相同的数据帧作为结果?
我是 R 的新手,主要尝试使用 dplyr 学习数据操作,因为外行人几乎可以理解它的语法。所以如果有人可以提供基于 dplyr 的解决方案那太棒了,我当然也愿意听取基于其他软件包的解决方案。
在 cases
定义的每个组中按 max(var1)
过滤:
maindata1 %>%
group_by(cases) %>%
filter(max(var1) > 950) %>%
arrange(cases)
# cases var1 var2
# 1 2 100 222
# 2 2 980 915
# 3 4 999 444
# 4 4 700 105
# 5 5 200 424
# 6 5 1000 152