R 聚合插入字符串

R 聚合插入字符串,r,grouping,R,Grouping,我有一个叫做教师的数据框架: Teachers <- data.frame(Discipline = c("Math","Math","Chem","Arts","History","History"), Teacher = c("Mark","Mark","Peter","Richard","Mark","Mark"), Position = c("Coord","Teacher", "Teac

我有一个叫做教师的数据框架:

Teachers <- data.frame(Discipline = c("Math","Math","Chem","Arts","History","History"),
                       Teacher = c("Mark","Mark","Peter","Richard","Mark","Mark"),
                       Position  = c("Coord","Teacher", "Teacher", "Teacher","Coord","Teacher"))
教师您可以使用:

library(dplyr)
Teachers %>% 
  group_by(Teacher, Discipline) %>% 
  summarise(Position = paste0(Position, collapse = '/'))
结果是:

# A tibble: 4 x 3
# Groups:   Teacher [?]
  Teacher Discipline      Position
   <fctr>     <fctr>         <chr>
1    Mark    History Coord/Teacher
2    Mark       Math Coord/Teacher
3   Peter       Chem       Teacher
4 Richard       Arts       Teacher
# A tibble: 3 x 3
  Teacher   Discipline      Position
   <fctr>        <chr>         <chr>
1    Mark Math/History Coord/Teacher
2   Peter         Chem       Teacher
3 Richard         Arts       Teacher
结果是:

# A tibble: 4 x 3
# Groups:   Teacher [?]
  Teacher Discipline      Position
   <fctr>     <fctr>         <chr>
1    Mark    History Coord/Teacher
2    Mark       Math Coord/Teacher
3   Peter       Chem       Teacher
4 Richard       Arts       Teacher
# A tibble: 3 x 3
  Teacher   Discipline      Position
   <fctr>        <chr>         <chr>
1    Mark Math/History Coord/Teacher
2   Peter         Chem       Teacher
3 Richard         Arts       Teacher
#一个tible:3 x 3
教师纪律职位
1马克数学/历史合作/教师
2彼得化学老师
3理查德艺术老师
您可以使用:

library(dplyr)
Teachers %>% 
  group_by(Teacher, Discipline) %>% 
  summarise(Position = paste0(Position, collapse = '/'))
结果是:

# A tibble: 4 x 3
# Groups:   Teacher [?]
  Teacher Discipline      Position
   <fctr>     <fctr>         <chr>
1    Mark    History Coord/Teacher
2    Mark       Math Coord/Teacher
3   Peter       Chem       Teacher
4 Richard       Arts       Teacher
# A tibble: 3 x 3
  Teacher   Discipline      Position
   <fctr>        <chr>         <chr>
1    Mark Math/History Coord/Teacher
2   Peter         Chem       Teacher
3 Richard         Arts       Teacher
结果是:

# A tibble: 4 x 3
# Groups:   Teacher [?]
  Teacher Discipline      Position
   <fctr>     <fctr>         <chr>
1    Mark    History Coord/Teacher
2    Mark       Math Coord/Teacher
3   Peter       Chem       Teacher
4 Richard       Arts       Teacher
# A tibble: 3 x 3
  Teacher   Discipline      Position
   <fctr>        <chr>         <chr>
1    Mark Math/History Coord/Teacher
2   Peter         Chem       Teacher
3 Richard         Arts       Teacher
#一个tible:3 x 3
教师纪律职位
1马克数学/历史合作/教师
2彼得化学老师
3理查德艺术老师

Base
R
使用以下功能的解决方案:

aggregate(Position ~ Discipline + Teacher, data = Teachers, 
          function(x) paste0(x, collapse = '/'))

#   Discipline Teacher      Position
# 1    History    Mark Coord/Teacher
# 2       Math    Mark Coord/Teacher
# 3       Chem   Peter       Teacher
# 4       Arts Richard       Teacher
或等效(HT@h3rm4n):


基本
R
使用函数的解决方案:

aggregate(Position ~ Discipline + Teacher, data = Teachers, 
          function(x) paste0(x, collapse = '/'))

#   Discipline Teacher      Position
# 1    History    Mark Coord/Teacher
# 2       Math    Mark Coord/Teacher
# 3       Chem   Peter       Teacher
# 4       Arts Richard       Teacher
或等效(HT@h3rm4n):


你接受
dplyr
解决方案吗?是的,没有问题你接受
dplyr
解决方案吗?是的,没有问题如果我希望纪律不是唯一的,它会是怎样的?之后我将使用它与其他数据帧合并。这将返回数据帧:@Malakias我从第一个解决方案中删除了
unique
-函数。您可以使用第一个数据帧的输出与另一个数据帧合并。好的,我试试看,Tksi如果我希望规程不是唯一的,它会是怎样的?之后我将使用它与其他数据帧合并。这将返回数据帧:@Malakias我从第一个解决方案中删除了
unique
-函数。您可以使用第一个数据帧的输出与另一个数据帧合并。好的,我试试看,TKSI您也可以以
聚合的形式使用它(Position~dictional+Teacher,Teachers,paste0,collapse='/')
(我在更新我的答案时,您发布了您的答案,我已经从我的答案中删除了它)。这就是我的意思,bouncyball,Tks!你也可以使用它的形式
聚合(Position~dictional+Teacher,Teachers,paste0,collapse='/')
(我在更新我的答案时,当你发布你的答案时,我已经将它从我的答案中删除了)这就是我的意思,bouncyball,Tks!