我有一个数据集,我不太确定如何在R中处理。这是一个年份列表,然后是这些年份的事故成本。一年内可能发生零事故,在这种情况下,线路在一年后结束。或者,可能有多个事故,在这种情况下,事故在一行上用空格隔开。
例如:
Year amount (en millions de USD)
1954 2934.57 388.37 3328.94
1955
1956 78.27
任何帮助将不胜感激
我有一个数据集,我不太确定如何在R中处理。这是一个年份列表,然后是这些年份的事故成本。一年内可能发生零事故,在这种情况下,线路在一年后结束。或者,可能有多个事故,在这种情况下,事故在一行上用空格隔开。
例如:
Year amount (en millions de USD)
1954 2934.57 388.37 3328.94
1955
1956 78.27
任何帮助将不胜感激
如果您使用read.table
, 并指定fill = TRUE
and阅读此内容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