1
Consdering輸入dsam
作爲組合:- [R分組在多個列
structure(list(a = structure(c(3L, 2L, 1L, 3L, 1L, 3L, 1L, 1L, 1L, 1L),
.Label = c("A", "B", "C"), class = "factor"), b = c(1,
1, 1, 1, 1, 3, 2, 3, 3, 1), c = structure(c(2L, 1L, 1L, 2L, 1L,
3L, 1L, 1L, 3L, 3L), .Label = c("D", "E", "F"), class = "factor")),
.Names = c("a", "b", "c"), row.names = c(NA, -10L), class = "data.frame")
我試圖組超過a
和c
和骨料b
各組保持每組一個記錄。但是看起來下面的代碼行爲不同。 ,原始數據用於分組超過300列,所以它不是明確指定的列名,因此使用用於分組的列名的列表的選項。
方法1:
dsam %>%
group_by(a,c) %>%
mutate(rnk = row_number(), b = sum(b)) %>%
filter(rnk == max(rnk)) %>% print()
#Source: local data frame [5 x 4]
#Groups: a, c [5]
#
# a b c rnk
# <fctr> <dbl> <fctr> <int>
#1 B 1 D 1
#2 C 2 E 2
#3 C 3 F 1
#4 A 7 D 4
#5 A 4 F 2
方法2:
dsam %>%
group_by_(unlist(c("a","c"))) %>%
mutate(rnk = row_number(), b = sum(b)) %>%
filter(rnk == max(rnk)) %>% print()
#Source: local data frame [3 x 4]
#Groups: a [3]
#
# a b c rnk
# <fctr> <dbl> <fctr> <int>
#1 B 1 D 1
#2 C 5 F 3
#3 A 11 F 6
我怎樣才能使方法2的行爲很像方法1?
p.s.由於用於分組的大量列,我寧願不將它們連接在一起。 謝謝。
啊,我是這樣一個白癡。謝謝! 這樣,我甚至不需要「unlist」。 – Aramis7d