AreaCode Name Rank
1001108 HA - 2326
1001247 HA - 2327
1003063 GC - 2328
1000957 DG - 2329
1001290 EA - 2330
1003305 GC - 2331
1003417 GC - 2332
1006442 WL - 2333
1005076 PK - 2334
1004581 NL - 2335
我是R的新手,我遇到了一些问题。我有一个数据集,我想将最接近的较高/较低排名的AreaCodes子集到GC,以便进行病例对照研究。
所以我想在一个单独的数据框中使用AreaCode 1001247,1000957,1001290,1006442。我该怎么做呢?我假设通过一个循环,但没有这些经验。这些数据有大约6000个观察结果,因此手工操作变得令人筋疲力尽。有没有办法做到这一点?
答案 0 :(得分:0)
cumsum
和rle
在这里很有用
brks <- cumsum(rle(df$Name)$lengths)
# [1] 2 3 4 5 7 8 9 10
equalsGC <- which(rle(df$Name)$values=="GC")
# [1] 2 5
ans <- df$AreaCode[sort(brks[c(equalsGC+1, equalsGC-1)])]
# [1] 1001247 1003063 1001290 1003417
作为单个块
brks <- cumsum(rle(df$Name)$lengths)
equalsGC <- which(rle(df$Name)$values=="GC")
ans <- df$AreaCode[sort(brks[c(equalsGC+1, equalsGC-1)])]
答案 1 :(得分:0)
替代方案是这样的(假设Name是一个字符变量):
List<Object> mData;
public void addItems(List<IArticleInterface> list) {
mData.addAll(list);
}