Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于另一个向量对字符向量进行排序_R_String - Fatal编程技术网

R 基于另一个向量对字符向量进行排序

R 基于另一个向量对字符向量进行排序,r,string,R,String,我想同时对第1列和第2列进行排序 数据 df <- structure(list(Column1 = c("italy, france, antarctica, brazil", "kenya, canada, spain, russia, japan"), Column2 = c("warm, cold, cold, warm", "warm, cold, warm, cold, cold")), cla

我想同时对第1列和第2列进行排序

数据

df <- structure(list(Column1 = c("italy, france, antarctica, brazil", 
"kenya, canada, spain, russia, japan"), Column2 = c("warm, cold, cold, warm", 
"warm, cold, warm, cold, cold")), class = "data.frame", row.names = c(NA, -2L))
专栏1 专栏2 意大利、法国、南极洲、巴西 温暖,寒冷,寒冷,温暖 肯尼亚、加拿大、西班牙、俄罗斯、日本 温暖,寒冷,温暖,寒冷,寒冷 使用
order(第1列)
(用数据替换第1列)获取具有排序顺序的向量,并使用此命令对两者进行排序。如果是
数据帧
,则变为

df[订单(df$“第1列”),]
再次用适当的名称替换
df
“第1列”

使用
order(第1列)
(用数据替换第1列)获得排序顺序的向量,并使用该向量对两者进行排序。如果是
数据帧
,则变为

df[订单(df$“第1列”),]

再次用适当的名称替换
df
列1

将逗号上的
列1
列2
拆分为新行,
排列
值并再次汇总排序的行

library(dplyr)

df %>%
  mutate(row = row_number()) %>%
  tidyr::separate_rows(Column1, Column2, sep = ',\\s*') %>%
  arrange(row, Column1, Column2) %>%
  group_by(row) %>%
  summarise(across(c(Column1, Column2), toString)) %>%
  select(-row) -> result

result

#  Column1                             Column2                     
#  <chr>                               <chr>                       
#1 antarctica, brazil, france, italy   cold, warm, cold, warm      
#2 canada, japan, kenya, russia, spain cold, cold, warm, cold, warm
库(dplyr)
df%>%
变异(行=行编号())%>%
tidyr::单独的_行(第1列、第2列、sep='、\\s*)%>%
排列(行、列1、列2)%>%
分组依据(行)%>%
总结(跨越(c(第1列、第2列)、toString))%>%
选择(-row)->结果
结果
#第1栏第2栏
#                                                        
#南极洲,巴西,法国,意大利冷,暖,冷,暖
#2加拿大、日本、肯尼亚、俄罗斯、西班牙冷、冷、暖、冷、暖
数据

df <- structure(list(Column1 = c("italy, france, antarctica, brazil", 
"kenya, canada, spain, russia, japan"), Column2 = c("warm, cold, cold, warm", 
"warm, cold, warm, cold, cold")), class = "data.frame", row.names = c(NA, -2L))

df将逗号上的
Column1
Column2
拆分为新行,
排列
值并再次汇总排序的行

library(dplyr)

df %>%
  mutate(row = row_number()) %>%
  tidyr::separate_rows(Column1, Column2, sep = ',\\s*') %>%
  arrange(row, Column1, Column2) %>%
  group_by(row) %>%
  summarise(across(c(Column1, Column2), toString)) %>%
  select(-row) -> result

result

#  Column1                             Column2                     
#  <chr>                               <chr>                       
#1 antarctica, brazil, france, italy   cold, warm, cold, warm      
#2 canada, japan, kenya, russia, spain cold, cold, warm, cold, warm
库(dplyr)
df%>%
变异(行=行编号())%>%
tidyr::单独的_行(第1列、第2列、sep='、\\s*)%>%
排列(行、列1、列2)%>%
分组依据(行)%>%
总结(跨越(c(第1列、第2列)、toString))%>%
选择(-row)->结果
结果
#第1栏第2栏
#                                                        
#南极洲,巴西,法国,意大利冷,暖,冷,暖
#2加拿大、日本、肯尼亚、俄罗斯、西班牙冷、冷、暖、冷、暖
数据

df <- structure(list(Column1 = c("italy, france, antarctica, brazil", 
"kenya, canada, spain, russia, japan"), Column2 = c("warm, cold, cold, warm", 
"warm, cold, warm, cold, cold")), class = "data.frame", row.names = c(NA, -2L))

df非常感谢您提供此解决方案!我将尝试在具有更多列的更大数据帧上实现此解决方案。非常感谢您使用dplyr的解决方案,因为我喜欢这个软件包!!非常感谢您提供此解决方案!我将尝试在具有更多列的更大数据帧上实现此解决方案。非常感谢您使用dplyr的解决方案,因为我喜欢这个软件包!!谢谢,我试过了,但是没有得到解决,但是谢谢你的时间。谢谢,我试过了,但是没有得到解决,但是谢谢你的时间。