【发布时间】:2013-07-11 04:07:52
【问题描述】:
请允许我详细说明。基本上,我有一个包含 4 列的数据框,其中一列中有 NA。当 NA 确实发生时,它们总是成组出现。我逐行遍历这个数据框,查看列。我想要做的是,一旦找到 NA,我想在达到正常值之前将该行中的数据帧子集到最后出现 NA 的行。
例如,假设我们查看我的数据框 df:
C1 C2 C3 C4 C5 C6
R1 2 1 2 1 0 0
R2 2 2 1 1 0 0
R3 0 0 1 1 2 1
R4 2 2 1 NA 0 0
R5 0 0 1 NA 2 1
R6 0 0 1 NA 2 1
R7 2 2 1 NA 0 0
R8 0 0 1 1 2 1
R9 2 1 2 1 0 0
R10 2 2 1 1 0 0
R11 0 0 1 1 2 1
R12 2 2 1 NA 0 0
R13 0 0 1 NA 2 1
R14 0 0 1 NA 2 1
当我逐行遍历 df 时,我遇到了第 4 行中的第一个 NA,然后我想将 df 从第 4 行子集到第 7 行,这是最后一个 NA 在这个特定的 NA 组中的位置。
子集:
R4 2 2 1 NA 0 0
R5 0 0 1 NA 2 1
R6 0 0 1 NA 2 1
R7 2 2 1 NA 0 0
请注意,我没有使用 NA 对所有行进行子集化,只有我正在查看的 NA 的当前“组”。我没有从第 12-14 行子集。
我该怎么做?
【问题讨论】:
-
您希望将这些行的每一组(具有连续的 NA 行)放在一个列表中吗? (假设您有更多行可能不止一次发生这种情况)。
-
也只有 C4 总是有 NA 吗?
-
@Arun,我想子集到一个新的数据框,所以看看上面的例子,一旦我在第 4 行遇到 NA,我想找到最后一个 NA在 NA 的范围内,然后是相应的子集。所以基本上我希望我的子集是:subset = df[4:7,]。问题是要找出最后一行。
-
是的,我明白了。但是如果您的数据在 C4 列中也有第 9 行和第 10 行以及 NA 怎么办。您希望结果与第一个子集合并还是希望它成为列表中的另一个 data.frame?
-
@Arun,希望我的编辑能澄清你的问题。我不想将所有子集存储在一个列表中,因为在获得一个子集后,我会对其进行处理,然后不再需要它,因此无需存储所有子集。跨度>