R - 根据模式重新排列数据

时间:2015-07-22 16:07:01

标签: r sorting

我想根据特定的简单模式重新排序我的数据。

我只想用一个行女性,一个行男性重新安排我的数据,一个接一个地保持householdid

数据如下所示:

  householdid.x    idno   isex iage
1        101366 1013661 FEMALE   29
2        101366 1013662   MALE   36
3        102481 1024812   MALE   39
4        102481 1024811 FEMALE   29
5        103755 1037552   MALE   36
6        103755 1037551 FEMALE   31

我无法弄清楚如何做到这一点。

让我们说FEMALE是第一位的。 我正在寻找的输出只是:

  householdid.x    idno   isex iage
1        101366 1013661 FEMALE   29
2        101366 1013662   MALE   36
4        102481 1024811 FEMALE   29
3        102481 1024812   MALE   39
6        103755 1037551 FEMALE   31
5        103755 1037552   MALE   36

数据

dta = structure(list(householdid.x = c("101366", "101366", "102481", 
"102481", "103755", "103755"), idno = c(1013661, 1013662, 1024812, 
1024811, 1037552, 1037551), isex = structure(c(1L, 2L, 2L, 1L, 
2L, 1L), .Label = c("FEMALE", "MALE"), class = "factor"), iage = structure(c(22L, 
29L, 32L, 22L, 29L, 24L), .Label = c(" 8", " 9", "10", "11", 
"12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", 
"23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", 
"34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", 
"45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", 
"56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", 
"67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", 
"78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", 
"89", "90", "91", "92", "93", "94", "95", "98"), class = "factor")), .Names = c("householdid.x", 
"idno", "isex", "iage"), row.names = c(NA, 6L), class = "data.frame")

1 个答案:

答案 0 :(得分:4)

如果每个家庭只有一名男性和女性,那么您可以这样做:

dta <- dta[order(dta$householdid.x, dta$isex), ]

给出了所需的输出:

  householdid.x    idno   isex iage
1        101366 1013661 FEMALE   29
2        101366 1013662   MALE   36
4        102481 1024811 FEMALE   29
3        102481 1024812   MALE   39
6        103755 1037551 FEMALE   31
5        103755 1037552   MALE   36

如果我没弄错的话,那就是带有r标签的第10个问题!