如何合并数据框中的每两列?

一世

我的数据是这样的

V2    V4       V6   V8
0     0.34     1    3
0.24    0      0.3  0
0       0      0    110
0       11     0    0
120     0      20   0
0       90     0    21

我想要具有两个条件的类似内容,如果连续有两个值,则取它们的平均值。如果一个值和一个零,则放置值;如果两个都为零,则为零

所以输出看起来像这样

V2      V6  
0.34    2   
0.24   0.3  
0      110
11      0   
120     20
90      21

我不需要获得平均值,因为我们拥有许多零,并且如下所述会影响结果。

阿克伦

我们list通过将使用生成的索引对相邻的两列对进行子集化来创建一个seqreplace其中0与NA,得到rowMeans,秒对0replace进行NaN求值。

m1 <- sapply(seq(1, ncol(df1), by=2), function(i) {
           x1 <- df1[ i:min((i+1), ncol(df1))]
           x2 <- rowMeans(replace(x1, x1==0, NA), na.rm=TRUE)
            replace(x2, is.nan(x2),0) 
 })
d1 <- as.data.frame(m1)
d1
#      V1    V2
#1   0.34   2.0
#2   0.24   0.3
#3   0.00 110.0
#4  11.00   0.0
#5 120.00  20.0
#6  90.00  21.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章