我有一个40行的1列数据帧/小标题,如下所示:
Team1
Team2
Team3
Team4
Team5
Team6
Team7
Team8
Team9
Team10
...
Team40
我想最终得到这样的东西:
Team1 x Team2
Team3 x Team4
Team5 x Team6
Team7 x Team8
...
Team19 x Team20
对不起,对于新手问题,但是我该如何在R中实现呢?
答案 0 :(得分:2)
使用dplyr
可以为合并(rep
)创建索引,确保您的团队井井有条(arrange
)。然后,您可以将团队与group_by
和summarise
data <- data.frame(team_no = paste0("Team", 1:20)) %>%
arrange(team_no) %>%
mutate(index_to_merge = rep(1:(nrow(data)/2), each = 2)) %>%
group_by(index_to_merge) %>%
summarise(team_no_merged = paste(team_no, collapse = " x "))
输出:
data
# A tibble: 10 x 2
index_to_merge team_no_merged
<int> <chr>
1 1 Team1 x Team2
2 2 Team3 x Team4
3 3 Team5 x Team6
4 4 Team7 x Team8
5 5 Team9 x Team10
6 6 Team11 x Team12
7 7 Team13 x Team14
8 8 Team15 x Team16
9 9 Team17 x Team18
10 10 Team19 x Team20
答案 1 :(得分:1)
df <- data.frame(team = paste0("Team", 1:40))
first <- seq(1, nrow(df), 2)
second <- seq(2, nrow(df), 2)
sapply(1:length(first), function(x) paste(df[first[x],1], "x", df[second[x],1]))
# [1] "Team1 x Team2" "Team3 x Team4" "Team5 x Team6" "Team7 x Team8" "Team9 x Team10" "Team11 x Team12" "Team13 x Team14" "Team15 x Team16"
# [9] "Team17 x Team18" "Team19 x Team20" "Team21 x Team22" "Team23 x Team24" "Team25 x Team26" "Team27 x Team28" "Team29 x Team30" "Team31 x Team32"
# [17] "Team33 x Team34" "Team35 x Team36" "Team37 x Team38" "Team39 x Team40"
答案 2 :(得分:0)
我们可以split
的每个备用值并将paste
与Reduce
一起使用
Reduce(function(x, y) paste(x, y, sep = " X "), split(df$team, c(TRUE, FALSE)[2:1]))
#[1] "Team1 X Team2" "Team3 X Team4" "Team5 X Team6" "Team7 X Team8" "Team9 X Team10" "Team11 X Team12"
#[7] "Team13 X Team14" "Team15 X Team16" "Team17 X Team18" "Team19 X Team20" "Team21 X Team22" "Team23 X Team24"
#[13] "Team25 X Team26" "Team27 X Team28" "Team29 X Team30" "Team31 X Team32" "Team33 X Team34" "Team35 X Team36"
#[19] "Team37 X Team38" "Team39 X Team40"