我想根据特定的简单模式重新排序我的数据。
我只想用一个行女性,一个行男性重新安排我的数据,一个接一个地保持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")
答案 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个问题!