我有这个数据框:
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
这样做的最佳方式是什么?
答案 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
,那么您将在此处复制每一行。