如何向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),]