如何向R中的现有列添加方法

如何向R中的现有列添加方法,r,R,我正在处理一个数据集,但我无法使事情正确 这里有一个例子,其中df是数据帧的名称 year ID value 2013 1 10 2013 2 20 2013 3 10 2014 1 20 2014 2 20 2014 3 30 2015 1 20 2015 2 10 2015 3 30 因此,我尝试制作另一个数据帧df1这里有一个带有data.table的选项,我们将'dat

我正在处理一个数据集,但我无法使事情正确

这里有一个例子,其中
df
是数据帧的名称

year    ID   value
2013    1    10
2013    2    20
2013    3    10
2014    1    20
2014    2    20
2014    3    30
2015    1    20
2015    2    10
2015    3    30

因此,我尝试制作另一个数据帧
df1这里有一个带有
data.table
的选项,我们将'data.frame'转换为'data.table'(
setDT(df)
),按'year'分组,得到'value'和'ID'的'
mean
作为'avg',然后使用
rbindlist
按'year'来rbind数据集和
order

library(data.table)
rbindlist(list(setDT(df), df[, .(ID = 'avg', value = mean(value)), year]))[order(year)]
#    year  ID    value
# 1: 2013   1 10.00000
# 2: 2013   2 20.00000
# 3: 2013   3 10.00000
# 4: 2013 avg 13.33333
# 5: 2014   1 20.00000
# 6: 2014   2 20.00000
# 7: 2014   3 30.00000
# 8: 2014 avg 23.33333
# 9: 2015   1 20.00000
#10: 2015   2 10.00000
#11: 2015   3 30.00000
#12: 2015 avg 20.00000

或者使用OP的方法,
rbind
两个数据集,然后
order

df2 <- rbind(df, transform(df1, ID = 'avg'))
df2 <- df2[order(df2$year),]

df2非常感谢!这真的很有帮助:)
library(data.table)
rbindlist(list(setDT(df), df[, .(ID = 'avg', value = mean(value)), year]))[order(year)]
#    year  ID    value
# 1: 2013   1 10.00000
# 2: 2013   2 20.00000
# 3: 2013   3 10.00000
# 4: 2013 avg 13.33333
# 5: 2014   1 20.00000
# 6: 2014   2 20.00000
# 7: 2014   3 30.00000
# 8: 2014 avg 23.33333
# 9: 2015   1 20.00000
#10: 2015   2 10.00000
#11: 2015   3 30.00000
#12: 2015 avg 20.00000
df2 <- rbind(df, transform(df1, ID = 'avg'))
df2 <- df2[order(df2$year),]