我有一个数据集,我不太清楚如何在R中处理。这是一份年数清单,然后是那些年份的事故费用。一年内可以发生零起事故,在这种情况下,线路会在一年后结束。或者,可能有多个事故,在这种情况下,事故是由一条线上的一个空格分隔的。
例如:
Year amount (en millions de USD)
1954 2934.57 388.37 3328.94
1955
1956 78.27任何帮助都将不胜感激。
发布于 2013-11-07 08:06:05
如果您使用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.27https://stackoverflow.com/questions/19830659
复制相似问题