功能“;“差别”;在R中的不同群上
我有一个数据框,有两组,一组是时间变量,一组是因变量。e、 g:功能“;“差别”;在R中的不同群上,r,plyr,R,Plyr,我有一个数据框,有两组,一组是时间变量,一组是因变量。e、 g: name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b") class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c
name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b")
class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3")
year <- c("2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008")
value <- c(100, 33, 80, 90, 80, 100, 100, 90, 80, 90, 80, 100, 100, 90, 80, 99, 80, 100)
df <- data.frame(name, class, year, value)
df
我试过了
aggregate(value~name + class, data=df, FUN="diff")
这并不能产生我在大型数据集中寻找的解决方案。提前非常感谢
Sebatianplyr软件包将成为您的朋友。函数
ddply
获取一个data.frame
,为每个定义的子集应用一个函数,然后返回所有重组片段的data.frame
最简单的解决方案是对(类、名称)
的每个组合使用汇总
和差异(值)
:
为了让你的年复一年都有结果,需要更多的参与:
ddply(df, .(class, name), summarize, year=head(year, -1), value=diff(value))
class name year value
1 c1 a 2010 -67
2 c1 a 2009 47
3 c1 b 2010 -10
4 c1 b 2009 20
5 c2 a 2010 -10
6 c2 a 2009 20
7 c2 b 2010 -10
8 c2 b 2009 -10
9 c3 a 2010 -10
10 c3 a 2009 -10
11 c3 b 2010 -19
12 c3 b 2009 20
plyr
软件包将成为您的朋友。函数ddply
获取一个data.frame
,为每个定义的子集应用一个函数,然后返回所有重组片段的data.frame
最简单的解决方案是对(类、名称)
的每个组合使用汇总
和差异(值)
:
为了让你的年复一年都有结果,需要更多的参与:
ddply(df, .(class, name), summarize, year=head(year, -1), value=diff(value))
class name year value
1 c1 a 2010 -67
2 c1 a 2009 47
3 c1 b 2010 -10
4 c1 b 2009 20
5 c2 a 2010 -10
6 c2 a 2009 20
7 c2 b 2010 -10
8 c2 b 2009 -10
9 c3 a 2010 -10
10 c3 a 2009 -10
11 c3 b 2010 -19
12 c3 b 2009 20
ddply(df, .(class, name), summarize, year=head(year, -1), value=diff(value))
class name year value
1 c1 a 2010 -67
2 c1 a 2009 47
3 c1 b 2010 -10
4 c1 b 2009 20
5 c2 a 2010 -10
6 c2 a 2009 20
7 c2 b 2010 -10
8 c2 b 2009 -10
9 c3 a 2010 -10
10 c3 a 2009 -10
11 c3 b 2010 -19
12 c3 b 2009 20