将NA列插入R中数据框的特定位置

时间:2019-01-20 17:12:12

标签: r cbind

我正在努力尝试将NAs列插入数据帧的特定位置。

例如,我有数据集:

dataset <- data.frame(c1 = 1:5, 
                      c2 = 2:6, 
                      c3 = 3:7, 
                      c4 = 4:8, 
                      c5 = 5:9, 
                      c6 = 10:14, 
                      c7 = 15:19, 
                      c8 = 20:24, 
                      c9 = 25:29, 
                      c10 = 30:34)

在此示例中,我想在dataset每2个存在的列之后插入4个NAs列。答案可能是这样的:

dataset.answer <- data.frame(c1 = 1:5,  
                             c2 = 2:6,
                             c.und.1<-rep(NA,dim(dataset)[1]), 
                             c.und.1<-rep(NA,dim(dataset)[1]), 
                             c.und.1<-rep(NA,dim(dataset)[1]), 
                             c.und.1<-rep(NA,dim(dataset)[1]),
                             c3=3:7,
                             c4=4:8,
                             c.und.1<-rep(NA,dim(dataset)[1]),
                             c.und.1<-rep(NA,dim(dataset)[1]), 
                             c.und.1<-rep(NA,dim(dataset)[1]), 
                             c.und.1<-rep(NA,dim(dataset)[1]),
                             c5=5:9,
                             c6=10:14,
                             c.und.1<-rep(NA,dim(dataset)[1]),
                             c.und.1<-rep(NA,dim(dataset)[1]), 
                             c.und.1<-rep(NA,dim(dataset)[1]),
                             c.und.1<-rep(NA,dim(dataset)[1]),
                             c7=15:19,
                             c8=20:24,
                             c.und.1<-rep(NA,dim(dataset)[1]), 
                             c.und.1<-rep(NA,dim(dataset)[1]), 
                             c.und.1<-rep(NA,dim(dataset)[1]), 
                             c.und.1<-rep(NA,dim(dataset)[1]),
                             c9=25:29,
                             c10=30:34)

有人建议用优雅的方式吗?

2 个答案:

答案 0 :(得分:2)

也许下面的基本R解决方案不是很好,但是我相信它能起作用。

 null value in column "article_id" violates not-null 
 constraint. DETAIL:  Failing row 
 contains (18, username@email.com, check message, 2019-01-20 18:35:36.615955+00, t, null).

答案 1 :(得分:2)

创建第二个http://localhost:51208/api/daily/mah/2018/08/13值数据集,然后替换相关列。

NA

df <- as.data.frame(matrix(NA, nrow(dataset), 6 * ncol(dataset) / 2 - 4)) cls <- rep(seq(0, ncol(df), by = 6), each=2) + 1:2 df[cls] <- dataset df # V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 # 1 1 2 NA NA NA NA 3 4 NA NA NA NA 5 10 NA NA NA NA 15 20 NA NA NA NA 25 30 # 2 2 3 NA NA NA NA 4 5 NA NA NA NA 6 11 NA NA NA NA 16 21 NA NA NA NA 26 31 # 3 3 4 NA NA NA NA 5 6 NA NA NA NA 7 12 NA NA NA NA 17 22 NA NA NA NA 27 32 # 4 4 5 NA NA NA NA 6 7 NA NA NA NA 8 13 NA NA NA NA 18 23 NA NA NA NA 28 33 # 5 5 6 NA NA NA NA 7 8 NA NA NA NA 9 14 NA NA NA NA 19 24 NA NA NA NA 29 34 6 * ncol(dataset) / 2 -4的列数由

确定
  • df-2个数字列+ 4个6
  • NA-我们正在创建的“集合”的数量
  • ncol(dataset) / 2-删除最后要附加的4 - 4

使用

可以很容易地在此处替换列名称
NA

尽管不建议有多个具有相同名称的列。