I have two lists:
list 1:
id name age
1 jake 21
2 ashly 19
45 lana 18
51 james 23
5675 eric 25
列表2(电视观看):
id hours
1 1.1
1 3
1 2.5
45 5.6
45 3
51 2
51 1
51 2
这只是一个例子,真实的列表非常庞大:列表1 - 5000个ID,列表2/3/4 - 超过100万行(不是唯一的ID)。
我需要为每个列表2及以上计算每个ID的平均值/总和/计数,并将该值添加到列表1中。请注意,我需要在另一个具有不同行号的列表中保存计算结果。
例如:
list 1:
id name age tv_average
1 jake 21 2.2
2 ashly 19 n/a
45 lana 18 4.3
51 james 23 1.6667
5675 eric 25 n/a
这是我的尝试:
for (i in 1:nrow(list2)) {
p <- subset(list2,list2$id==i)
list2$tv_average[i==list2$id] <- sum(p$hours)/(nrow(p))
}
错误: 在22999行中,只有21713行起作用。
data.frame
类,这是一种特殊类型的list
类。subset()
可以用于数据框,但不能用于列表。如果您使用dput()
或共享代码创建示例数据,所有这些都将被清除。请阅读此链接以了解如何制作良好的可重复示例,然后编辑您的问题以使您的数据可重复。 - Gregor Thomasdput()
或共享创建样本数据的代码来进行复现。请阅读我第一条评论中的链接以了解更多信息。另外,正如我所说,可能你有数据框,而不仅仅是列表。并且子集在数据框上可以正常工作。但我无法确定,因为你没有共享可复现的数据。 - Gregor Thomas