gpt4 book ai didi

r - 从频率表中获取 "raw"数据

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

我一直在寻找有关美国命名趋势的一些数据。我设法获得了 2008 年出生的婴儿的前 1000 个名字。数据在这个庄园里格式化:

 male.name n.male female.name n.female
Jacob 22272 Emma 18587
Michael 20298 Isabella 18377
Ethan 20004 Emily 17217
Joshua 18924 Madison 16853
Daniel 18717 Ava 16850
Alexander 18423 Olivia 16845
Anthony 18158 Sophia 15887
William 18149 Abigail 14901
Christopher 17783 Elizabeth 11815
Matthew 17337 Chloe 11699

我想要一个 data.frame有 2 个变量: namegender .
这可以通过循环来完成,但我认为解决这个问题的方法效率很低。我认为有些 reshape功能将满足我的需求。

我们假设这个制表符分隔的数据保存在 data.frame 中命名 bnames .循环可以用函数完成:
 tmp <- character()
for (i in 1:nrow(bnames)) {
tmp <- c(tmp, rep(bnames[i,1], bnames[i,2]))
}

但我想用基于矢量的方法来实现这一点。有什么建议?

最佳答案

因此,一个快速版本是转换 data.frame 并使用 rbind()功能
得到你想要的。

dataNEW <- data.frame(bnames[,1],c("m"), bnames[,c(2,3)], c("f"), bnames[,4])
colnames(dataNEW) <- c("name", "gender", "value", "name", "gender", "value")

这会给你:
          name gender value      name gender value
1 Jacob m 22272 Emma f 18587
2 Michael m 20298 Isabella f 18377
3 Ethan m 20004 Emily f 17217
4 Joshua m 18924 Madison f 16853
5 Daniel m 18717 Ava f 16850
6 Alexander m 18423 Olivia f 16845
7 Anthony m 18158 Sophia f 15887
8 William m 18149 Abigail f 14901
9 Christopher m 17783 Elizabeth f 11815
10 Matthew m 17337 Chloe f 11699

现在您可以使用 rbind() :
dataNGV <- rbind(dataNEW[1:3],dataNEW[4:6])

这导致:
      name gender value
1 Jacob m 22272
2 Michael m 20298
3 Ethan m 20004
4 Joshua m 18924
5 Daniel m 18717
6 Alexander m 18423
7 Anthony m 18158
8 William m 18149
9 Christopher m 17783
10 Matthew m 17337
11 Emma f 18587
12 Isabella f 18377
13 Emily f 17217
14 Madison f 16853
15 Ava f 16850
16 Olivia f 16845
17 Sophia f 15887
18 Abigail f 14901
19 Elizabeth f 11815
20 Chloe f 11699

关于r - 从频率表中获取 "raw"数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190154/

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