Groupby 一列并根据 R 中的字符串向量重新排列另一列字符串
Posted
技术标签:
【中文标题】Groupby 一列并根据 R 中的字符串向量重新排列另一列字符串【英文标题】:Groupby one column and rearrange another string column based on a vector of string in R 【发布时间】:2022-01-21 19:25:48 【问题描述】:对于以下玩具数据dd
,我尝试将langue
列分组并根据向量char_order
的顺序重新排列char
列:
dd <- data.frame(langue = c('English', 'French', 'English', 'French'),
char = c('world', 'monde', 'hello', 'bonjour'),
x = c(8, 3, 9, 9),
y = c(1, 1, 1, 2))
dd
char_order <- c('hello', 'world', 'bonjour', 'monde')
dd %>%
group_by(langue) %>% arrange(.by_group = TRUE)
输出:
langue char x y
<chr> <chr> <dbl> <dbl>
1 English world 8 1
2 English hello 9 1
3 French monde 3 1
4 French bonjour 9 2
但我希望得到如下结果:
langue char x y
<chr> <chr> <dbl> <dbl>
1 English hello 9 1
2 English world 8 1
3 French bonjour 9 2
4 French monde 3 1
我怎样才能在 pipe (%>%) 中使用 dplyr
或其他软件包实现这一点?真诚的感谢。
【问题讨论】:
dd %>%arrange(langue, factor(char, char_order))
我测试过,你的代码可以达到与@Park 相同的结果,谢谢。
【参考方案1】:
您可以设置因子水平
dd %>%
mutate(char = factor(char, levels = char_order)) %>%
group_by(langue) %>% arrange(char, .by_group = TRUE)
langue char x y
<chr> <fct> <dbl> <dbl>
1 English hello 9 1
2 English world 8 1
3 French bonjour 9 2
4 French monde 3 1
【讨论】:
刚刚评论了类似的东西以上是关于Groupby 一列并根据 R 中的字符串向量重新排列另一列字符串的主要内容,如果未能解决你的问题,请参考以下文章