我在R中有一个这样的数据帧:

我想重新排序第二列"Car“字母,如下所示:
小汽车
奥迪/宝马/大众
奥迪/宝马
奥迪/宝马/大众
奥迪/宝马/保时捷/大众
可以有0到15辆带有分隔符"/“的汽车
我的解决方案有点复杂。(使用该列构建新的DataFrame,将它们拆分成多列,按字母顺序重新排列行,将它们粘贴在一起,插入到原始数据帧中)
您是否知道更好、更智能的解决方案?
非常感谢
发布于 2020-04-07 18:06:47
这基本上就是您所做的,但没有创建新的数据帧和新的列。
df$Car <- sapply(strsplit(as.character(df$Car), "/"), function(x)
paste(sort(x), collapse = "/"))发布于 2020-04-08 04:01:39
我们可以使用separate_rows拆分第二列,然后按'Name‘和’arrange‘拆分元素,并按'Name’对元素进行分组
library(dplyr)
library(tidyr)
library(stringr)
df1 %>%
separate_rows(Car) %>%
arrange(Name, Car) %>%
group_by(Name, zipcode) %>%
summarise(Car = str_c(Car, collapse="/"))
# A tibble: 4 x 3
# Groups: Name [4]
# Name zipcode Car
# <chr> <dbl> <chr>
#1 Frank 3456 Audi/BMW/VW
#2 Lilly 1333 Audi/BMW/Porsche/VW
#3 Marie 1416 Audi/BMW
#4 Peter 1213 Audi/BMW/VW 数据
df1 <- structure(list(Name = c("Peter", "Marie", "Frank", "Lilly"),
Car = c("BMW/VW/Audi", "Audi/BMW", "VW/BMW/Audi", "Audi/BMW/VW/Porsche"
), zipcode = c(1213, 1416, 3456, 1333)),
class = "data.frame", row.names = c(NA,
-4L))https://stackoverflow.com/questions/61077457
复制相似问题