R语言dplyr中的`cur_`系列函数

系列函数(n(), cur_group(), cur_group_id(), cur_group_rows(), cur_column())是dplyr包中用于在特定上下文(如summarise()mutate()等)中获取关于当前组或变量的信息的函数。下面结合例子逐一解释它们的用途:

1.n(): 返回当前组的大小,即当前组内的观测数量。

df <- 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,每个组变量对应一列。

gf %>% summarise(data = list(cur_group()))

这个例子中,summarise(data = list(cur_group()))返回了当前组的键,以列表形式存储。

3.cur_group_id(): 返回当前组的唯一数字标识符。

gf %>% mutate(id = cur_group_id())

这个例子中,mutate(id = cur_group_id())为每个观测添加了一个表示当前组的唯一数字标识符。

4.cur_group_rows(): 返回当前组的行索引。

gf %>% reframe(row = cur_group_rows())

这个例子中,reframe(row = cur_group_rows())返回了当前组的行索引。

补充:reframe() 函数

reframe() 函数用于重新定义数据框的结构,包括列名、列的顺序等。它允许你指定新的列名和列的顺序,以便重新构建数据框的结构。

library(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()中使用,返回当前列的名称。

gf %>% mutate(across(everything(), ~ paste(cur_column(), round(.x, 2))))

这个例子中,across()函数中使用了cur_column()来获取当前列的名称,然后对每列应用了相应的操作。

补充:across() 函数

across() 函数主要用于在数据框中同时对多个列进行相同的操作。它适用于 mutate()summarise() 和其他一些函数,允许你指定多个列并对它们应用相同的函数或操作

library(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() 主要用于对多个列进行相同的操作

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mengke25

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值