根据条件向数据框添加行

时间:2013-06-15 15:58:43

标签: r dataframe

我有这个数据框:

percentDf <- data.frame(category=c("a", "a", "b", "c", "c", "d"), 
                        percent=c(50, 50, 100, 30, 70, 100))

percentDf
  category percent
1        a      50
2        a      50
3        b     100
4        c      30
5        c      70
6        d     100

percent中的值为100的行中,我需要复制该行,并将其添加到下面。这应该是输出的数据帧:

percentDfComplete <- data.frame(category=c("a", "a", "b", "b", "c", "c", "d", "d"), 
                                percent=c(50, 50, 100, 100, 30, 70, 100, 100))

percentDfComplete
  category percent
1        a      50
2        a      50
3        b     100
4        b     100
5        c      30
6        c      70
7        d     100
8        d     100

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:4)

我先取出它们,然后rbind取出它们,然后order取出它们。

out <- rbind(percentDf, percentDf[percentDf$percent == 100, ])
out[order(out$category), ]

或者,您可以先找到哪些行percent = 100,然后对data.frame进行追加,排序和索引。

percentDf[sort(c(seq_len(nrow(percentDf)), which(percentDf$percent == 100))), ]

注意:如果您在原始data.frame中有两行b 100,那么您将在此处复制每一行。