首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初学者rbind函数

初学者rbind函数
EN

Stack Overflow用户
提问于 2015-01-27 08:43:15
回答 2查看 586关注 0票数 1

我无论如何也不能理解rbind函数。我试着使用这里的例子,但我不知道我做错了什么。我所要做的就是将我的第二个数据框中的数据添加到第一个数据框下。

rbind是否要求列具有相同的名称或...?

代码语言:javascript
复制
ParticipantA=c("A","B","C","D")
Score1A=c("21","20","21","21")
Score2A=c("32","40","32","31")
Score3A=c("47","50","43","46")
BlockA=data.frame(ParticipantA,Score1A,Score2A,Score3A)
BlockA$Major=c("Computer_Science","Computer_Science","Computer_Science","Computer_Science")
BlockA$Gender=c("Female","Female","Male","Male")
ParticipantB=c("E","F","G","H")
Score1B=c("28","28","21","22")
Score2B=c("30","36","37","32")
Score3B=c("41","49","49","46")
BlockB=data.frame(ParticipantB,Score1B,Score2B,Score3B)
BlockB$Major=c("Medical","Medical","Medical","Medical")
BlockB$Gender=c("Female","Female","Male","Male")
EN

回答 2

Stack Overflow用户

发布于 2015-03-03 07:23:45

rbind要求所有列具有相同的名称和类。

票数 1
EN

Stack Overflow用户

发布于 2015-08-18 05:38:39

问题出在专栏标题中。rbind使用列标题来确定绑定行的方式。列可以是不同的顺序,R将只使用第一个元素来确定列的顺序。

或者,向数据框中添加另一个值为"A“或"B”的列,可以保留您的信息,而无需在列名中输入“A”和“B”--这就是您不能使用rbind的原因。额外的一列还允许您在R中进行更多分析,例如回归和其他线性模型。

以下是处理数据的一种方法:

创建可用于数据框"BlockA“和"BlockB”的一组统一的列名

代码语言:javascript
复制
final_colnames <- c("Block", "Participant", "Score1", "Score2", "Score3") 

创建一个新列表以标识参与者所属的区块。

代码语言:javascript
复制
BlockA = c("A", "A", "A", "A")

您以前的数据

代码语言:javascript
复制
ParticipantA = c("A", "B", "C", "D")
Score1A = c("21", "20", "21", "21")
Score2A = c("32", "40", "32", "31")
Score3A = c("47", "50", "43", "46")

标签"BlockA“在这里被循环使用来命名新的数据框,但不是在添加"A”"A“的"BlockA”列列表之前。

代码语言:javascript
复制
BlockA = data.frame(BlockA, ParticipantA, Score1A, Score2A, Score3A)

此时必须添加新的列名,以便名称的数量和列数相等。

代码语言:javascript
复制
colnames(BlockA) <- final_colnames 

现在您可以添加剩余的列

代码语言:javascript
复制
BlockA$Major = c("Computer_Science", "Computer_Science", "Computer_Science", "Computer_Science")
BlockA$Gender = c("Female", "Female", "Male", "Male")

BlockB也是同样的过程

代码语言:javascript
复制
BlockB = c("B", "B", "B", "B")             # the extra column
ParticipantB = c("E", "F", "G", "H")
Score1B = c("28", "28", "21", "22")
Score2B = c("30", "36", "37", "32")
Score3B = c("41", "49", "49", "46")
BlockB = data.frame(BlockB, ParticipantB, Score1B, Score2B, Score3B)
colnames(BlockB) <- final_colnames         # renaming the columns
BlockB$Major = c("Medical", "Medical", "Medical", "Medical")
BlockB$Gender = c("Female", "Female", "Male", "Male")

统一的列名意味着rbind现在可以工作了。

代码语言:javascript
复制
rbind(BlockA,BlockB) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28161418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档