我目前正在尝试修改R中的数据框,我想知道是否有可能使用dplyr代码执行此操作。我的目标是创建一个新列,它组合了每个'text'列的三行条目。我的数据如下:
source xmin xmax text dur
1 FR1_ 0.465000 0.725000 tour 260
2 FR1_ 0.725000 0.805000 de 80
3 FR1_ 0.805000 1.175000 rôle 370
4 FR1_ 3.418440 3.608440 pomme 190
5 FR1_ 3.608440 3.728440 de 120
6 FR1_ 3.728440 4.128440 terre 400
7 FR1_ 5.586440 6.066440 colonie 480
8 FR1_ 6.066440 6.196440 de 130
9 FR1_ 6.196440 6.796440 vacances 600
我的目标是创建一个新的列'word',如下所示:
source xmin xmax text dur word
1 FR1_ 0.465000 0.725000 tour 260 tour de rôle
2 FR1_ 0.725000 0.805000 de 80 tour de rôle
3 FR1_ 0.805000 1.175000 rôle 370 tour de rôle
4 FR1_ 3.418440 3.608440 pomme 190 pomme de terre
5 FR1_ 3.608440 3.728440 de 120 pomme de terre
6 FR1_ 3.728440 4.128440 terre 400 pomme de terre
7 FR1_ 5.586440 6.066440 colonie 480 colonie de vacances
8 FR1_ 6.066440 6.196440 de 130 colonie de vacances
9 FR1_ 6.196440 6.796440 vacances 600 colonie de vacances
我很感激任何建议!
答案 0 :(得分:0)
dplyr不喜欢单独使用行索引确定的多行单元。因此,第一步是创建一个变量,我们可以使用它将行分组为三个簇。然后,我们可以使用标准group_by()
和muatate()
来扩展新列。例如
library(dplyr)
dd %>%
mutate(cluster=(1:n()-1)%/%3) %>%
group_by(cluster) %>%
mutate(word=paste(text, collapse=" ")) %>%
ungroup() %>%
select(-cluster)
这适用于样本数据
dd<-read.table(text=" source xmin xmax text dur
1 FR1_ 0.465000 0.725000 tour 260
2 FR1_ 0.725000 0.805000 de 80
3 FR1_ 0.805000 1.175000 rôle 370
4 FR1_ 3.418440 3.608440 pomme 190
5 FR1_ 3.608440 3.728440 de 120
6 FR1_ 3.728440 4.128440 terre 400
7 FR1_ 5.586440 6.066440 colonie 480
8 FR1_ 6.066440 6.196440 de 130
9 FR1_ 6.196440 6.796440 vacances 600", header=TRUE)