【发布时间】:2017-11-18 03:20:43
【问题描述】:
我有一个这样的数据框:
idx type val1 val2 val3 val4 val5 val6
1 a 0.2 NA NA NA NA NA
2 a 0.3 NA NA NA NA NA
3 a 0.2 NA NA NA NA NA
4 a NA 0.3 NA NA NA NA
5 a NA 0.5 NA NA NA NA
6 a NA 0.2 NA NA NA NA
7 a NA NA 0.2 NA NA NA
8 a NA NA 0.5 NA NA NA
9 a NA NA 0.4 NA NA NA
10 a NA NA NA 0.4 NA NA
11 a NA NA NA 0.6 NA NA
12 a NA NA NA 0.6 NA NA
.
.
.
34 b NA NA NA NA NA 0.6
35 b NA NA NA NA NA 0.4
36 b NA NA NA NA NA 0.3
我想合并行并删除 NA。所以这就是我想要实现的目标:
idx type val1 val2 val3 val4 val5 val6
1 a 0.2 0.3 0.2 0.4 0.3 0.2
2 a 0.3 0.5 0.5 0.6 0.4 0.5
3 a 0.2 0.2 0.4 0.6 0.5 0.6
4 b 0.4 0.2 0.2 0.5 0.4 0.6
5 b 0.3 0.5 0.6 0.3 0.6 0.4
6 b 0.3 0.4 0.3 0.6 0.5 0.3
【问题讨论】:
-
na.omit?drop.na? -
你的例子让我很困惑。您如何在列中向上移动值但仍保留相同的
idx? IE。 -val2中的值0.3/0.5/0.2曾经与idx4/5/6相关联,但现在它们与idx1/2/3相关联。这里的逻辑是什么? -
嗯,这就是 OP 想知道的。基本上是按列而不是按行删除 NA 值,然后向上移动。
-
@spinodal - 关键是没有办法真正告诉 OP 究竟需要什么。
type是否按行锁定到某个值,但idx不是?每列是否有 3 个type=='a'值和 3 个type=='b'值。显示“之前” data.frame 中的每个值和“之后”中的每个值的稍微小一点的示例将是理想的。我们都可以猜到预期的输出可能是什么,但如果它可以变得显而易见,那又有什么意义呢? -
对不起,
idx列并不重要,我们可以删除该列。此外,type没有被任何值锁定。 @spinodal 说的是正确的,我希望在每一列中删除 NA,将值向上移动并折叠总行数。