gpt4 book ai didi

r - 有条件地聚合数据框

转载 作者:行者123 更新时间:2023-12-04 11:17:04 24 4
gpt4 key购买 nike

我的数据框包含变量 xy 的纵向测量值,在不同的时间点 time,在几个主题 编号。但是 xy 有一些缺失值。

我想要的是聚合数据框,以便为每个 id 我得到第一个定义的 xy 值。 xy 将在不同的时间点,但这并不重要。

testdf<-data.frame(id=c(rep("A",4),rep("B",4),rep("C",4) ), x=c(NA, NA, 1,2, 3, NA, NA, 1, 2, NA,NA, 5), y=rev(c(NA, NA, 1,2, 3, NA, NA, 1, 2, NA,NA, 5)), time=c(1,2,3,4,0.1,0.5,10,20,3,2,1,0.5))

这样 testdf 就会减少到

 id x y
1 A 1 5
2 B 3 1
3 C 5 1

更新: 允许数据框具有大量变量的解决方案是否可能(无需显式定义的解决方案或函数) xy 变量,以防数据框有大量变量?

最佳答案

这是一个基本的 R 方法——与@kohske 的答案几乎相同的概念,但使用 bylapply

不过,首先,您需要按“id”和“时间”对您的 data.frame 进行排序(这也适用于@kohske 的回答)。

testdf2 <- testdf[order(testdf$id, testdf$time), ]

do.call(rbind, by(testdf2[2:3],
testdf2$id,
FUN = function(aa)
lapply(aa, function(bb) na.omit(bb)[1])))
# x y
# A 1 5
# B 3 1
# C 5 1

by 的第一部分中,指定要“聚合”的列。

关于r - 有条件地聚合数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14537868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com