系列函数(n(), cur_group(), cur_group_id(), cur_group_rows(), cur_column())是dplyr包中用于在特定上下文(如summarise()和mutate()等)中获取关于当前组或变量的信息的函数。下面结合例子逐一解释它们的用途:
1.n(): 返回当前组的大小,即当前组内的观测数量。
xxxxxxxxxxdf <- tibble( g = sample(rep(letters[1:3], 1:3)), x = runif(6), y = runif(6))gf <- df %>% group_by(g)
gf %>% summarise(n = n())这个例子中,summarise(n = n())返回了每个组的观测数量。
2.cur_group(): 返回当前组的键,是一个tibble,每个组变量对应一列。
xxxxxxxxxxgf %>% summarise(data = list(cur_group()))这个例子中,summarise(data = list(cur_group()))返回了当前组的键,以列表形式存储。
3.cur_group_id(): 返回当前组的唯一数字标识符。
xxxxxxxxxxgf %>% mutate(id = cur_group_id())这个例子中,mutate(id = cur_group_id())为每个观测添加了一个表示当前组的唯一数字标识符。
4.cur_group_rows(): 返回当前组的行索引。
xxxxxxxxxxgf %>% reframe(row = cur_group_rows())这个例子中,reframe(row = cur_group_rows())返回了当前组的行索引。
补充:reframe() 函数:
reframe() 函数用于重新定义数据框的结构,包括列名、列的顺序等。它允许你指定新的列名和列的顺序,以便重新构建数据框的结构。
xxxxxxxxxxlibrary(dplyr)
df <- data.frame( A = c(1, 2, 3), B = c(4, 5, 6), C = c(7, 8, 9))
df %>% reframe(X = A, Y = B, Z = C)上述例子中,reframe(X = A, Y = B, Z = C) 将重新构建数据框,将列 A 重新命名为 X,列 B 重新命名为 Y,列 C 重新命名为 Z。
reframe() 主要用于重新定义数据框的结构,包括列名和顺序。
5.cur_column(): 在across()中使用,返回当前列的名称。
xxxxxxxxxxgf %>% mutate(across(everything(), ~ paste(cur_column(), round(.x, 2))))这个例子中,across()函数中使用了cur_column()来获取当前列的名称,然后对每列应用了相应的操作。
补充:across() 函数:
across() 函数主要用于在数据框中同时对多个列进行相同的操作。它适用于 mutate()、summarise() 和其他一些函数,允许你指定多个列并对它们应用相同的函数或操作
xxxxxxxxxxlibrary(dplyr)
df <- data.frame( A = c(1, 2, 3), B = c(4, 5, 6), C = c(7, 8, 9))
df %>% mutate(across(c(A, B, C), ~ . * 2))上述例子中,across(c(A, B, C), ~ . * 2) 将对 A、B 和 C 列都应用了乘以2的操作。
across() 主要用于对多个列进行相同的操作