gpt4 book ai didi

r - 根据匹配向量将数据帧的某些行移动到末尾

转载 作者:行者123 更新时间:2023-12-04 10:44:35 26 4
gpt4 key购买 nike

我有一个 > 300000 行的数据框。我想选择三个字符串的匹配项并将那些匹配的行移动到数据框的末尾。我需要保留最终数据框中不匹配的行。最后,将绘制我的数据并将重新排序的数据框写入 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

我需要保留不匹配的行。
我看了这个帖子 Select and sort rows of a data frame based on a vector但它会丢失不匹配的数据。

最佳答案

尝试这个:

x <- as.character(df$id) %in% matchlist
rbind(df[!x,], df[x,])

# id A B
# 2 match4 4 in
# 8 match9 H under
# 9 match8 j in
# 13 match4 19 beside
# 1 match1 6 in
# 3 match1 8 in
# 4 match2 3 out
# 5 match3 T over
# 6 match2 8 in
# 7 match1 H over
# 10 match2 3 out
# 11 match1 20 under
# 12 match3 2 out

关于r - 根据匹配向量将数据帧的某些行移动到末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43073960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com