【发布时间】:2020-01-02 00:24:22
【问题描述】:
如果该组中的最大值大于某个值,我正在尝试过滤 data.table 中组中的所有行。以下是我将如何在 DPLY 中执行此操作,以及如何在 data.table 中分两步使其工作。
#DPLYR
df<-data.table(
x =1:12
,y = 1:3
)
df %>% group_by(y) %>%
filter(max(x) < 11)
##data.table
df[,max_value :=max(x),by=y][max_value<11]
The output should be
x y
1: 1 1
2: 4 1
3: 7 1
4: 10 1
有没有一种方法可以一步完成,而无需在我的数据集中创建列?我所能找到的只是对组进行子集化以获得组内的一个特定值,而不是返回组中满足条件的所有行。
【问题讨论】:
-
在这种情况下,最好提供一些所需输出的图片。只是
df吗? -
刚刚更新了它,但是,是 df 的一个子集,其中只有满足该条件的组值。
-
您可以添加
[,-3],即使它并不能真正回答您的问题。df[,max_value :=max(x),by=y][max_value<11][,-3] -
是的,我的意思是,理想情况下,我不必为了删除它而创建第二列,但我可以通过
[,-length(colnames(df)-1]来概括它。 -
是的,很抱歉,我不知道 data.table 中有一种不需要那么多代码的方法。
标签: r data.table