【发布时间】:2016-03-13 07:02:06
【问题描述】:
我有一个包含城市列表和每日温度记录的数据框
data = data.frame(c("Chicago", "Chicago", "New York", "New York", "Denver"),
c(25, 36, 23, 24, 42))
我想添加第三列,即按城市划分的平均温度
avgtemp = c(30.5, 30.5, 23.5, 23.5, 42)
我曾尝试使用包dplyr 执行此操作,但没有成功。实现这一目标的最佳方法是什么,注意完整的数据集包含 50,000 行,因此我希望代码高效。
【问题讨论】:
-
“但没有成功”是什么意思?请显示尝试、错误消息等。
-
如果值实际上是数字,请尝试
ave(data[, 2], data[, 1])。 @CathG 已修复以匹配他们想要的输出。 -
如果数据量大,性能有问题,可以试试data.table
-
如果你想使用
dplyr,你可以使用group_by和mutate结合使用