R - 根据模式重新排列数据[重复]

Posted

技术标签:

【中文标题】R - 根据模式重新排列数据[重复]【英文标题】:R - rearrange data according to pattern [duplicate] 【发布时间】:2015-10-12 15:22:50 【问题描述】:

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

我只想用一个女性行、一个男性行重新排列我的数据,以便一个接一个地保持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")

【问题讨论】:

使用 dplyr:dta %>% arrange(householdid.x,isex) 【参考方案1】:

如果每户只有一男一女,那么你可以这样做:

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

如果我没记错的话,这是第 100,000 个带有r 标签的问题!

【讨论】:

哦,是吗?我在哪里可以看到这个100,000th question with the r tag 好吧,实际上并没有这么说,但是如果您单击r 标签,它会告诉您在边栏中标记了r 的问题数量。当你问你的问题时,这是 100,000。但如果在你被删除之前提出问题,那么它就不再是第 100,000 个了。

以上是关于R - 根据模式重新排列数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

重新排序数据框中的因子水平[重复]

将数据框重新排列到表格中,与“融化”相反 [重复]

如何根据特定列的值重新排列数据框的行

如何将excel一行的有重复数据按重复出现次数的大小重新排列!在线等!

在R中重新排列多个矩阵的形状

java+spring应用中如何使用设计模式排列文件结构