R:如何在数据帧中重新连接拆分的字符串

R:如何在数据帧中重新连接拆分的字符串,r,split,concatenation,R,Split,Concatenation,我使用以下方法创建了一个数据帧: Student <- c("John Davis","Angela Williams","Bullwinkle Moose","David Jones", "Janice Markhammer","Cheryl Cushing","Reuven Ytzrhak","Greg Knox","Joel England", "Mary Rayburn") Math <- c(502,600,412,358,495,512,410,625,573,522)

我使用以下方法创建了一个数据帧:

Student <- c("John Davis","Angela Williams","Bullwinkle Moose","David Jones",
"Janice Markhammer","Cheryl Cushing","Reuven Ytzrhak","Greg Knox","Joel England",
"Mary Rayburn")
Math <- c(502,600,412,358,495,512,410,625,573,522)
Science <- c(95,99,80,82,75,85,80,95,89,86)
English <- c(25,22,18,15,20,28,15,30,27,18)
student.exam.data <- data.frame(Student,Math,Science,English)

Student问题是线路

student.exam.data$Student[1] <- strsplit(as.character(student.exam.data$Student[1]), " ", fixed = FALSE)
因此,第一个元素有两个值。从字面意义上来说,这是为了重新组合你的问题--


student.exam.data$student[1]您可能会发现使用
tidyr::separate()
unite()
更方便

例如:

library(tidyr)

student.exam.data %>% separate(Student, c('first_name','last_name')) -> d2

head(d2,3)
返回:

  first_name last_name Math Science English
1       John     Davis  502      95      25
2     Angela  Williams  600      99      22
3 Bullwinkle     Moose  412      80      18
         full_name Math Science English
1       John Davis  502      95      25
2  Angela Williams  600      99      22
3 Bullwinkle Moose  412      80      18
同样地:

d2 %>% unite('full_name', first_name, last_name, sep=' ') -> d3

head(d3, 3)
返回:

  first_name last_name Math Science English
1       John     Davis  502      95      25
2     Angela  Williams  600      99      22
3 Bullwinkle     Moose  412      80      18
         full_name Math Science English
1       John Davis  502      95      25
2  Angela Williams  600      99      22
3 Bullwinkle Moose  412      80      18