从数据框中选择所有行,包括基于向量R的重复行

时间:2018-07-18 13:49:05

标签: r dataframe

我正在尝试根据年份向量引导数据集:

这是我的数据框df:

'data.frame':   103 obs. of  3 variables:
 $ date     : Date, format: "1962-08-01" "1982-08-01" "1983-08-01" ...
 $ flow     : num  0 0 0 0 0 0 0 0 0 0.404 ...
 $ hydroYear: Factor w/ 45 levels "1950","1951",..: 11 27 28 29 33 35 36 37 40 41 ...

我正在使用类似这样的启动程序:

qmat <- boot(data=as.integer(as.vector(unique(df$hydroYear))),statstic=xboot,R=100)

现在,我想从df中创建一个新的数据帧,其中所有与启动年向量具有相同df$hydro年的行都将存在,包括重复。

例如,如果我的数据框是:

flow    hydroYear
1       1951
2       1951
3       1953
4       1954
5       1954
6       1956

,引导向量为:

1954 1953 1954 1951

我将得到一个看起来像这样的数据框:

flow    hydroYear
4       1954
5       1954
3       1953
4       1954
5       1954
1       1951
2       1951

我已经尝试过了:

  xboot <-  function(yearboot,b,method){
    tmpyr <- yearboot[b]
    df1 <- df[df$hydroYear %in% tmpyr ,]}

但不会创建重复率

1 个答案:

答案 0 :(得分:1)

不是唯一的方法,但

mydf <- data.frame(flow=c(1,2,3,4,5,6), hydroYear=c(1951,1951,1953,1954,1954,1956))
boot <- c(1954,1953,1954,1951)
do.call(rbind, lapply(boot, FUN=function(x){mydf[mydf$hydroYear == x, ]}))

给予

   flow hydroYear
4     4      1954
5     5      1954
3     3      1953
41    4      1954
51    5      1954
1     1      1951
2     2      1951