我有一個非常大的一組數據,按設施號,年份和月份排序。在最後一列中,我有一組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