R按字母顺序重新排列列值
我在R中有这样一个数据帧: 我想对第二栏“汽车”重新排序如下: 汽车 奥迪/宝马/大众 奥迪/宝马 奥迪/宝马/大众 奥迪/宝马/保时捷/大众 可能有0到15辆车带有分隔符“/” 我的解决方案有点复杂。(使用此列构建新的数据框,将其拆分为多列,按字母顺序重新排列行,将它们粘贴在一起,插入原始数据框) 你知道更好更聪明的解决方案吗R按字母顺序重新排列列值,r,R,我在R中有这样一个数据帧: 我想对第二栏“汽车”重新排序如下: 汽车 奥迪/宝马/大众 奥迪/宝马 奥迪/宝马/大众 奥迪/宝马/保时捷/大众 可能有0到15辆车带有分隔符“/” 我的解决方案有点复杂。(使用此列构建新的数据框,将其拆分为多列,按字母顺序重新排列行,将它们粘贴在一起,插入原始数据框) 你知道更好更聪明的解决方案吗 非常感谢这基本上就是您所做的,但是没有创建新的数据帧和新列 df$Car <- sapply(strsplit(as.character(df$Car), "/
非常感谢这基本上就是您所做的,但是没有创建新的数据帧和新列
df$Car <- sapply(strsplit(as.character(df$Car), "/"), function(x)
paste(sort(x), collapse = "/"))
df$Car我们可以使用分隔行
来拆分第二列,然后按“名称”排列
,并按“名称”粘贴
按“名称”分组的元素
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
库(dplyr)
图书馆(tidyr)
图书馆(stringr)
df1%>%
分隔行(车)%>%
安排(姓名、汽车)%>%
分组依据(名称,zipcode)%>%
总结(Car=str_c(Car,collapse=“/”))
#一个tibble:4x3
#分组:名称[4]
#名称zipcode汽车
#
#1法兰克3456奥迪/宝马/大众
#2礼来1333奥迪/宝马/保时捷/大众
#3玛丽1416奥迪/宝马
#4彼得1213奥迪/宝马/大众
数据
df1
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))