微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在R中分组后选择聚合列的第n个值

鉴于df如下:

# group value
# 1     A     8
# 2     A     1
# 3     A     7
# 4     B     3
# 5     B     2
# 6     B     6
# 7     C     4
# 8     C     5

df <- structure(list(group = structure(c(1L,1L,2L,3L,3L),.Label = c("A","B","C"),class = "factor"),value = c(8L,7L,6L,4L,5L)),.Names = c("group","value"),class = "data.frame",row.names = c(NA,-8L))

索引向量(可能带NA):

inds <- c(2,1,NA)

我们如何得到每组列值的第n个元素,最好是在基数R?

例如,基于inds,我们想要组A中的第二个元素值,组B中的第一个元素,组C中的NA.因此结果将是:

#[1] 1 3 NA

解决方法

这是一个mapply和split的解决方案:

mapply("[",with(df,split(value,group)),inds)

它返回一个命名向量

A  B  C 
 1  3 NA

with(df,group))按组拆分数据帧并返回数据帧列表. mapply接受该列表和“inds”并将子集化函数“[”应用于每对参数.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐