1

我有这个数据框:

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

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

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

做这个的最好方式是什么?

4

1 回答 1

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那么您将在此处复制每一行。

于 2013-06-15T16:03:51.393 回答