每行每个变量读取多个观察值

时间:2013-11-07 08:01:06

标签: r

我有一个数据集,我不太确定如何处理 R 。这是那些年的年份和事故成本的清单。一年内可能发生零事故,在这种情况下,线路在一年后结束。或者,可能发生多起事故,在这种情况下,事故由一条线上的空间隔开。

例如:

Year    amount (en millions de USD)
1954    2934.57     388.37      3328.94
1955     
1956    78.27

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

如果您使用read.table阅读此内容,并指定fill = TRUEskip = 1,则应将NA放入行的任何缺失元素中。例如:

dat = read.table('~/tmp/test.txt', skip = 1, fill = TRUE)
    V1      V2     V3      V4
1 1954 2934.57 388.37 3328.94
2 1955      NA     NA      NA
3 1956   78.27     NA      NA

我将您的示例粘贴到文件~/tmp/test.txt中。接下来,我将使用melt包中的reshape2来更改数据的组织:

library(reshape2)
dat_melt = melt(dat, id.vars = c('V1'))
    V1 variable   value
1 1954       V2 2934.57
2 1955       V2      NA
3 1956       V2   78.27
4 1954       V3  388.37
5 1955       V3      NA
6 1956       V3      NA
7 1954       V4 3328.94
8 1955       V4      NA
9 1956       V4      NA

并获得每年的事故成本:

library(plyr)
ddply(dat_melt, .(V1), summarise, sum_cost = sum(value, na.rm = TRUE))
    V1 sum_cost
1 1954  6651.88
2 1955     0.00
3 1956    78.27