我有一个数据集,我不太确定如何处理 R 。这是那些年的年份和事故成本的清单。一年内可能发生零事故,在这种情况下,线路在一年后结束。或者,可能发生多起事故,在这种情况下,事故由一条线上的空间隔开。
例如:
Year amount (en millions de USD)
1954 2934.57 388.37 3328.94
1955
1956 78.27
非常感谢任何帮助
答案 0 :(得分:2)
如果您使用read.table
阅读此内容,并指定fill = TRUE
和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
中。接下来,我将使用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