我有一个非常大的一组数据,按设施号,年份和月份排序。在最后一列中,我有一组TRUE/FALSE语句。我为此设置了最后一列,以便对于每个唯一的一组(设施编号,年份和月份),该列将从FALSE开始,但以TRUE(在我的程序中的其他位置确定)转换为某个点。如何选择按其他变量排序的最小TRUE值
我希望找到在每个独特的(设施数,年份和月份),其中最后一列从开关到FALSE TRUE最小的行号。
下面是表的样本:
fac_num year month t
1: 1 2017 1 FALSE
2: 1 2017 1 FALSE
3: 1 2017 1 FALSE
4: 1 2017 1 FALSE
5: 1 2017 1 FALSE
---
2466726: 62 2017 4 TRUE
2466727: 62 2017 4 TRUE
2466728: 65 2017 1 TRUE
2466729: 65 2017 5 TRUE
2466730: 65 2017 5 TRUE
到目前为止,我已经能够只管理如何获得真正的价值最低的行数的整体,而不是每个一套独特的(设施数,年和月)。
min(which(dat0a$t))
上面的代码返回
64
这是在最低真值正确的行数(fac_num = 1年= 2017年,月= 1),但我想知道如何为任何(设施号码,年份和月份)组合重复此操作,而无需手动输入每个组合,因为有数百个潜在组合。
这将更容易解决一个更可重复的例子。你应该看看'dplyr'包。我认为你正在寻找的东西是这样的:'库(dplyr) dat0a%>% GROUP_BY(fac_num,年,月)%>% 变异( RN = ROW_NUMBER(), rn_min =分钟(RN)) ' – roarkz
看起来你正在使用data.table。如果这是真的,你可以使用'dat0a [,which.max(t),by = fac_num]'。在基数R中,你可以做'汇总(t_fa_n_num,data = dat0a,which.max)'。这是有效的,因为'which.max'将返回第一个观察到的最大值的位置。 – lmo