我无论如何也不能理解rbind函数。我试着使用这里的例子,但我不知道我做错了什么。我所要做的就是将我的第二个数据框中的数据添加到第一个数据框下。
rbind是否要求列具有相同的名称或...?
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")发布于 2015-03-03 07:23:45
rbind要求所有列具有相同的名称和类。
发布于 2015-08-18 05:38:39
问题出在专栏标题中。rbind使用列标题来确定绑定行的方式。列可以是不同的顺序,R将只使用第一个元素来确定列的顺序。
或者,向数据框中添加另一个值为"A“或"B”的列,可以保留您的信息,而无需在列名中输入“A”和“B”--这就是您不能使用rbind的原因。额外的一列还允许您在R中进行更多分析,例如回归和其他线性模型。
以下是处理数据的一种方法:
创建可用于数据框"BlockA“和"BlockB”的一组统一的列名
final_colnames <- c("Block", "Participant", "Score1", "Score2", "Score3") 创建一个新列表以标识参与者所属的区块。
BlockA = c("A", "A", "A", "A")您以前的数据
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”列列表之前。
BlockA = data.frame(BlockA, ParticipantA, Score1A, Score2A, Score3A)此时必须添加新的列名,以便名称的数量和列数相等。
colnames(BlockA) <- final_colnames 现在您可以添加剩余的列
BlockA$Major = c("Computer_Science", "Computer_Science", "Computer_Science", "Computer_Science")
BlockA$Gender = c("Female", "Female", "Male", "Male")BlockB也是同样的过程
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现在可以工作了。
rbind(BlockA,BlockB) https://stackoverflow.com/questions/28161418
复制相似问题