在R中,长期到广泛依赖于条件

时间:2017-12-12 14:11:12

标签: r dataframe transform

我有以下数据框:

long  band   d    Ret
 100   0     1    2.10
 100   0     2    1.96
 100   0     1    -1.10
 100   0     2    0.96
 100   0     1    0.54
 100   0     2    -2.12
 200   0     1    3.10
 200   0     2    -1.96
 200   0     1    5.66
 200   0     2    2.22
 200   0     1    -0.54
 200   0     2    0.25

我想对其进行转换,以便对应于相同long / band / d列的Ret值在一行中,以便:

 long  band   d    Ret1    Ret2   Ret3
 100    0     1    2.10   -1.10   0.54
 100    0     2    1.96    0.9.   -2.12
 200    0     1    3.10    5.66   -0.54
 200    0     2    -1.96   2.22   0.25

我已经尝试过'转换'并融化,但他们没有条件让Rets并排

1 个答案:

答案 0 :(得分:1)

将df作为输入数据帧

library(tidyr)
df_mdfd <- as.data.frame(spread(df,Ret_Var,4))
for (k in (4:ncol(df_mdfd))){
for (i in (1:nrow(df_mdfd)))
{
  for (j in (4:ncol(df_mdfd)-1))
  {
    if (is.na(df_mdfd[i,j])&!(is.na((df_mdfd[i,j+1])))){
      df_mdfd[i,j] <- df_mdfd[i,j+1]
      df_mdfd[i,j+1] <- NA
    } }}}

df_output <- as.data.frame(t(na.omit(t(df_mdfd))))
colnames(df_output) <- c("long","band","d","Ret1","Ret2","Ret3")
df_output