我有一个包含超过300,000行的数据框。我希望选择匹配三个字符串的行,并将那些匹配的行移到数据框的末尾。我需要在最终的数据框中保留不匹配的行。最后,我的数据将被绘制并重新排序的数据框将被写入xls。
以下是一些示例数据:
生成的数据帧应该是这样的:
以下是一些示例数据:
mydata <- structure(list(id = structure(c(1L, 4L, 1L, 2L, 3L, 2L, 1L, 6L,
5L, 2L, 1L, 3L, 4L), .Label = c("match1", "match2", "match3",
"match4", "match8", "match9"), class = "factor"), A = structure(c(6L,
5L, 7L, 4L, 10L, 7L, 8L, 8L, 9L, 4L, 3L, 2L, 1L), .Label = c("19",
"2", "20", "3", "4", "6", "8", "H", "j", "T"), class = "factor"),
B = structure(c(2L, 2L, 2L, 3L, 4L, 2L, 4L, 5L, 2L, 3L, 5L,
3L, 1L), .Label = c("beside", "in", "out", "over", "under"
), class = "factor")), .Names = c("id", "A", "B"), row.names = c(NA,
-13L), class = "data.frame")
它看起来像这样:
id A B
match1 6 in
match4 4 in
match1 8 in
match2 3 out
match3 T over
match2 8 in
match1 H over
match9 H under
match8 j in
match2 3 out
match1 20 under
match3 2 out
match4 19 beside
我想使用这个字符串的向量将匹配的行移到数据框的末尾。
matchlist = c("match1", "match2", "match3")
生成的数据帧应该是这样的:
id A B
match4 4 in
match9 H under
match8 j in
match4 19 beside
match1 H over
match1 6 in
match1 8 in
match1 20 under
match2 3 out
match2 8 in
match2 3 out
match3 T over
match3 2 out
我需要保留不匹配的行。 我查看了这篇文章选择并按照向量排序数据帧的行但它会丢失不匹配的数据。
mydata[order(mydata$id %in% matchlist), ]
- mt1022