0

我有一个数据集,我不太确定如何在R中处理。这是一个年份列表,然后是这些年份的事故成本。一年内可能发生零事故,在这种情况下,线路在一年后结束。或者,可能有多个事故,在这种情况下,事故在一行上用空格隔开。

例如:

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

任何帮助将不胜感激

4

1 回答 1

2

如果您使用read.table, 并指定fill = TRUEand阅读此内容skip = 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。接下来,我将使用meltreshape2中的数据来更改数据的组织:

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
于 2013-11-07T08:06:05.243 回答