使用 R 重新排列数据

Using R to Rearrange Data

我正在处理 R 中的一些数据。为了再现性,数据如下:

month,source,amount1,amount2,total
jan,central,200,400,600
jan,tax,100,200,300
jan,fines,100,200,300
jan,east,150,50,200
jan,tax,100,25,125
jan,fine,0,75,75
jan,levies,0,0,0
Jan,tithe,0,0,0

请注意,central 的金额是 taxfines 的总和。我想通过添加一个包含术语中心的列来重新排列数据,如下所示。

month,source,amount1,amount2,total,new_column
jan,tax,100,200,300,central
jan,fines,100,200,300,central
jan,tax,100,25,125,east
jan,fine,0,75,75,east
jan,levies,0,0,0,east
Jan,tithe,0,0,0,east

感谢您的帮助。注意行数不统一。

假设有一种行顺序模式:“source”、“tax”、“fine”,我们可以 split 每 3 行,删除第一行,添加新列从第一行“源”列开始,然后 rbind 结果:

do.call(rbind, 
        lapply(split(x, rep(1:(nrow(x)/3), each = 3)), function(i){
          res <- i[2:nrow(i), ]
          res$new_column <- i[1, "source" ]
          res
        }))
#     month source amount1 amount2 total new_column
# 1.2   jan    tax     100     200   300    central
# 1.3   jan  fines     100     200   300    central
# 2.5   jan    tax     100      25   125       east
# 2.6   jan   fine       0      75    75       east

我建议您尽可能更改源数据。罚款、税收和中部或东部的数据似乎不应该放在同一列中。 Central 或 East 可能代表位置数据,而罚款和税收是收入来源。