转换数据框,使多个重叠的列形成一个比例?

时间:2018-07-31 13:30:08

标签: r dataframe match

说我有一个如下数据帧(实际上这是绑定的多个数据帧):

data.frame(
  position = c(3,4,7,12,NA,NA,NA,NA,NA,NA,NA,NA),
  colb = c(1,3,8,2,NA,NA,NA,NA,NA,NA,NA,NA),
  colc = c(4,6,9,5,NA,NA,NA,NA,NA,NA,NA,NA),
  position = c(2,7,8,10,11,12,15,16,19,21,24,26),
  colb = c(1,3,8),
  colc = c(4,6,9)
)

(对不起,如果我自己发布数据格式,则会被标记。)

我该如何转换它,以便有一个统一的指示“位置”的系统?即以下两种格式之一。

单列刻度:

position    colb colc   colb.1 colc.1
1            NA  NA      NA     NA
2            NA  NA      1      4
3            1    4      NA     NA
4            3    6      NA     NA
5            NA   NA     NA     NA
6            NA   NA     NA     NA
7            8    9      3      6
8            NA   NA     8      9
9            NA   NA     NA     NA
10           NA   NA     1      4
11           NA   NA     3      6
12           2    5      8      9
13           NA   NA     NA     NA
14           NA   NA     NA     NA
15           NA   NA     1      4
16           NA   NA     3      6
17           NA   NA     NA     NA
18           NA   NA     NA     NA
19           NA   NA     8      9
20           NA   NA     NA     NA
21           NA   NA     1      4
22           NA   NA     NA     NA
23           NA   NA     NA     NA
24           NA   NA     3      6
25           NA   NA     NA     NA
26           NA   NA     8      9

或带有单独的列,但“匹配”:

position colb colc position.1 colb.1 colc.1
NA       NA   NA        NA      NA     NA
NA       NA   NA        2       3      6
3        1    4         NA      NA     NA
4        3    6         NA      NA     NA
NA       NA   NA        NA      NA     NA
NA       NA   NA        NA      NA     NA
7        8    9         7       1      4
NA       NA   NA        8       3      6
NA       NA   NA        NA      NA     NA
NA       NA   NA        10      1      4
NA       NA   NA        11      3      6
12       2   5          12      8      9
NA       NA   NA        NA      NA     NA
NA       NA   NA        NA      NA     NA
NA       NA   NA        15      8      9
NA       NA   NA        16      1      4
NA       NA   NA        NA      NA     NA
NA       NA   NA        NA      NA     NA
NA       NA   NA        19      1      4
NA       NA   NA        NA      NA     NA
NA       NA   NA        21      8      9
NA       NA   NA        NA      NA     NA
NA       NA   NA        NA      NA     NA
NA       NA   NA        24      8      9
NA       NA   NA        NA      NA     NA
NA       NA   NA        26      8      9

感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

如果SELECT CONVERT(varchar, DATEADD(ms, sum(time), 0), 108), * FROM( SELECT CAST([start_time] as DATE) AS [DATE], State, Sum(Time) AS Downtime, STATIONNAME FROM A6K_Events Where StationName Like 'P%' AND State='Downtime' AND (Dep != 'Event Log Error' OR Dep IS NULL) GROUP BY [start_time],STATIONNAME, State ) AS S PIVOT (sum(Downtime) FOR STATIONNAME IN([P1],[P2],[P3],[P4],[P5],[P6],[P7], [P8],[P9],[P10])) AS PT GatewayException: Invalid column name 'time'. caused by SQLServerException: Invalid column name 'time'. 包含数据框

df