r - 使用R中的ddply中的summary返回某一列中的第n个单元格
问题描述
我正在尝试使用带有 ddply 的汇总返回某个列中每个 id 的第 n 行。在下面的示例中,让我们说 b 列中每个 id 的第二个单元格。
id <- c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5)
b <- c(9, 9, 9, 7, 5, 4, NA, NA, 3, 2)
c <- c(2, 3, 6, 7, 4, 5, 3, NA, 4, 7)
df <- data.frame(id,b,c)
df
a b c
1 1 9 2
2 1 9 3
3 2 9 6
4 2 7 7
5 3 5 4
6 3 4 5
7 4 NA 3
8 4 NA NA
9 5 3 4
10 5 2 7
我尝试了以下方法:
df_2 <- ddply(df, ~a, summarise,
b_mean_per_id = mean(b, na.rm = TRUE),
second_b = nth(df$b, 2))
仅返回 b 中的第二个单元格(不是每个 id)
a b_mean_per_id second_b
1 1 9.0 9
2 2 8.0 9
3 3 4.5 9
4 4 NaN 9
5 5 2.5 9
但我想要的是:
a b_mean_per_id second_b
1 1 9.0 9
2 2 8.0 7
3 3 4.5 4
4 4 NaN NA
5 5 2.5 2
任何提示高度赞赏:)
解决方案
有了dplyr
我们可以做
library(dplyr)
df %>%
group_by(id) %>%
summarise(b_mean = mean(b, na.rm = TRUE),
second_b = b[2])
# id b_mean second_b
# <dbl> <dbl> <dbl>
#1 1. 9.00 9.
#2 2. 8.00 7.
#3 3. 4.50 4.
#4 4. NA NA
#5 5. 2.50 2.
我们也可以使用nth
代替直接子设置b
df %>%
group_by(id) %>%
summarise(b_mean = mean(b, na.rm = TRUE),
second_b = nth(b, 2))
推荐阅读
- javascript - 画布事件侦听器不起作用
- javascript - 在有状态和无状态组件中使用 Props
- sql-server - 查询分析两个不同数据库中的两个表并返回其中一个表中不存在列值的位置
- spring-batch - Spring批量自定义计数基于一些逻辑
- sql - T-SQL 过于昂贵的查询,在 where/have 条件和复合主键中选择
- python - Kombu 在发布时断开连接
- redis - redis排序集中的模式匹配并按顺序返回结果
- vba - If not isempty 出现错误
- spring - 使用 Spring Boot 的 REST 客户端
- ios - 震动不会停止