R中

2017-08-04 31 views
0

复制单元格下来,我需要改变这个表:R中

1 a b 0.689723476 0.149916917 
    a b 0.200907662 0.109557062 
    a b 0.684007597 0.703492299 
    a b 0.437375902 0.074223984 
    a b 0.090612241 0.146617232 
    a b 0.526821187 0.895595247 
2 a b 0.507794544 0.731096076 
    a b 0.688987918 0.405801748 
    a b 0.462341505 0.203533346 
    a b 0.750096552 0.889744763 
    a b 0.555074241 0.06610472 

成这样:

1 a b 0.689723476 0.149916917 
1 a b 0.200907662 0.109557062 
1 a b 0.684007597 0.703492299 
1 a b 0.437375902 0.074223984 
1 a b 0.090612241 0.146617232 
1 a b 0.526821187 0.895595247 
2 a b 0.507794544 0.731096076 
2 a b 0.688987918 0.405801748 
2 a b 0.462341505 0.203533346 
2 a b 0.750096552 0.889744763 
2 a b 0.555074241 0.06610472 

基本上,我需要向下重复第一行,直到出现一个新的号码,那个号码将重复。

if IsNull([Row0:Column1]) then [Row-1:NewColumn] else [Row0:Column1 endif 

这将创建一个新的列将采取如果上述单元格的值:我通常使用一种叫做多行式工具,在这里我做一个快速的if语句是这样做的Alteryx它是空的,否则它会复制新的值。

在R或其他解决方案中是否有类似的问题?

UPDATE

包括dput数据:

structure(list(X1 = c(1L, NA, NA, NA, NA, NA, 2L, NA, NA, NA, 
NA, NA, NA, NA, NA), X2 = c("a", "a", "a", "a", "a", "a", "a", 
"a", "a", "a", "a", "a", "a", "a", "a"), X3 = c("b", "b", "b", 
"b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b"), 
    X4 = c(0.057520727, 0.54421869, 0.695381681, 0.866708518, 
    0.764246757, 0.622363342, 0.023082188, 0.140441859, 0.404509135, 
    0.806008319, 0.649705949, 0.607341742, 0.275179259, 0.199698605, 
    0.420250037), X5 = c(0.826617034, 0.338437818, 0.069566611, 
    0.95791903, 0.900005669, 0.533003641, 0.075841125, 0.200099759, 
    0.858293828, 0.271342591, 0.308531235, 0.344739272, 0.259006154, 
    0.824994839, 0.610793113)), .Names = c("X1", "X2", "X3", 
"X4", "X5"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-15L), spec = structure(list(cols = structure(list(X1 = structure(list(), class = c("collector_integer", 
"collector")), X2 = structure(list(), class = c("collector_character", 
"collector")), X3 = structure(list(), class = c("collector_character", 
"collector")), X4 = structure(list(), class = c("collector_double", 
"collector")), X5 = structure(list(), class = c("collector_double", 
"collector"))), .Names = c("X1", "X2", "X3", "X4", "X5")), default = structure(list(), class = c("collector_guess", 
"collector"))), .Names = c("cols", "default"), class = "col_spec")) 
+0

输入数据的格式是什么?数据帧中只有第2-5列? – CPak

+0

是的,它是一个数据帧 –

+2

请发布数据的'dput'。基础数据类型可能会影响解决方法。 – lmo

回答

0

我们可以从tidyr包使用fill功能。 dt是您的原始数据框。 dt2是最终输出。

library(tidyr) 
dt2 <- fill(dt, X1)