我想使用R根据Eco_Status分组ID。

huangapple go评论93阅读模式
英文:

I Want to Group IDs According to Eco_Status Using R

问题

我想要另一个数据框,其中包含四个Eco_Status作为列,并且将每个ID按照它们在每个Eco_Status下出现的情况分组。

给定上述数据框df,我想要一个包含pooraveragerichbillionaire作为它们状态的ID的向量。

英文:

I want another data frame that has the four(4) Eco_Status as column and group each ID as each occurs under each Eco_Status

  1. # group ID_numbers according to their respective status
  2. df <- read.table(text =
  3. "ID Pof_Exp Eco_Status Gender
  4. 31304 2 poor male
  5. 31310 4 poor female
  6. 31307 6 rich male
  7. 31302 8 average male
  8. 31301 10 billionaire male
  9. 31308 2 poor female
  10. 31316 4 poor male
  11. 31317 6 rich male
  12. 31312 8 average female
  13. 31306 10 average female
  14. 31314 2 poor female
  15. 31311 4 average male
  16. 31305 6 rich male
  17. 31303 8 average male
  18. 31309 10 average female
  19. 31324 2 poor male
  20. 31320 4 poor female
  21. 31327 6 average male
  22. 31322 8 average female
  23. 31321 10 billionaire male",
  24. header = TRUE)

Given the above data frame df, I want a vector of ID having poor, average, rich, and billionaire as their status.

答案1

得分: 2

这是另一个可能的解决方案:

  1. df %>%
  2. select(-c(Pof_Exp, Gender)) %>%
  3. group_by(Eco_Status) %>%
  4. mutate(row = row_number()) %>%
  5. tidyr::pivot_wider(names_from = Eco_Status, values_from = ID) %>%
  6. select(-row)

这将产生以下结果:

  1. poor rich average billionaire
  2. <int> <int> <int> <int>
  3. 1 31304 31307 31302 31301
  4. 2 31310 31317 31312 31321
  5. 3 31308 31305 31306 NA
  6. 4 31316 NA 31311 NA
  7. 5 31314 NA 31303 NA
  8. 6 31324 NA 31309 NA
  9. 7 31320 NA 31327 NA
  10. 8 NA NA 31322 NA
英文:

here is another possible solution:

  1. df %&gt;% select(-c(Pof_Exp, Gender)) %&gt;% group_by(Eco_Status) %&gt;%
  2. mutate(row = row_number()) %&gt;%tidyr::pivot_wider(names_from = Eco_Status, values_from = ID) %&gt;%
  3. select(-row)

which gives:

  1. poor rich average billionaire
  2. &lt;int&gt; &lt;int&gt; &lt;int&gt; &lt;int&gt;
  3. 1 31304 31307 31302 31301
  4. 2 31310 31317 31312 31321
  5. 3 31308 31305 31306 NA
  6. 4 31316 NA 31311 NA
  7. 5 31314 NA 31303 NA
  8. 6 31324 NA 31309 NA
  9. 7 31320 NA 31327 NA
  10. 8 NA NA 31322 NA

答案2

得分: 1

像这样吗?

  1. df %>%
  2. group_by(Eco_Status) %>%
  3. summarise(ID = list(ID))
  4. Eco_Status ID
  5. 1 average 31302, 31312, 31306, 31311, 31303, 31309, 31327, 31322
  6. 2 billionaire 31301, 31321
  7. 3 poor 31304, 31310, 31308, 31316, 31314, 31324, 31320
  8. 4 rich 31307, 31317, 31305
英文:

Something like this?

  1. df %&gt;%
  2. group_by(Eco_Status) %&gt;%
  3. summarise(ID = list(ID))
  4. Eco_Status ID
  5. 1 average 31302, 31312, 31306, 31311, 31303, 31309, 31327, 31322
  6. 2 billionaire 31301, 31321
  7. 3 poor 31304, 31310, 31308, 31316, 31314, 31324, 31320
  8. 4 rich 31307, 31317, 31305

huangapple
  • 本文由 发表于 2023年7月12日 21:28:45
  • 转载请务必保留本文链接:https://go.coder-hub.com/76671123.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定