我想在連續組之間使用setdiff
而不使用循環,如果可能的話使用數據表或應用系列函數。多次使用setdiff()連續組而不循環使用
數據幀DF:
id group
1 L1 1
2 L2 1
3 L1 2
4 L3 2
5 L4 2
6 L3 3
7 L5 3
8 L6 3
9 L1 4
10 L4 4
11 L2 5
我想知道有多少新的ID有連續組之間。因此,例如,如果我們比較組1和2,則有兩個新ID:L3
和L4
,因此它返回2(不與setdiff
直接相關,但與length()
),如果我們比較組2和3,則L5
和是新聞ID所以它返回2等等。
預期結果:
new_id
2
2
2
1
數據:
structure(list(id = structure(c(1L, 2L, 1L, 3L, 4L, 3L, 5L, 6L,
1L, 4L, 2L), .Label = c("L1", "L2", "L3", "L4", "L5", "L6"), class = "factor"),
group = c(1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5)), class = "data.frame", row.names = c(NA,
-11L), .Names = c("id", "group"))
你可以,也建立一些關閉[此帖](的http://stackoverflow.com/questions/19891278/r-table-of-interactions-case-與寵物和房子) - 例如'tab = table(df)> 0; (colSums(tab) - crossprod(tab))[cbind(2:5,1:4)]'(並相應地調整子集中的硬編碼) –