Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List - Fatal编程技术网

R 按唯一坐标列出的列表

R 按唯一坐标列出的列表,r,list,R,List,我有一个像下面这样的数据框。不过,我想将其折叠,以便每个唯一坐标都是其子ID的列表 subID latlon 1 S20298920 29.2178694, -94.9342990 2 S35629295 26.7063982, -80.7168961 3 S35844314 26.7063982, -80.7168961 4 S35833936 26.6836236, -80.3512144 7 S30634757 42.4585456

我有一个像下面这样的数据框。不过,我想将其折叠,以便每个唯一坐标都是其子ID的列表

       subID                  latlon
1  S20298920 29.2178694, -94.9342990
2  S35629295 26.7063982, -80.7168961
3  S35844314 26.7063982, -80.7168961
4  S35833936 26.6836236, -80.3512144
7  S30634757 42.4585456, -76.5146989
8  S35834082 26.4330582, -80.9416786
9  S35857972 26.4330582, -80.9416786
10 S35833885 26.7063982, -80.7168961

所以,在这里,我希望(26.7063982,-80.7168961)是一个包含(S35629295,S35844314)的列表,(29.2178694,-94.9342990)是一个只包含(S20298920)的列表。我认为列表是最有意义的。

使用
聚合

out <- aggregate(data=df,subID~latlon,FUN = function(t) list(sort(paste(t))))
out
输出:

$`26.4330582 -80.9416786`
$`26.4330582 -80.9416786`[[1]]
[1] "S35834082"

$`26.4330582 -80.9416786`[[2]]
[1] "S35857972"


$`26.6836236 -80.3512144`
$`26.6836236 -80.3512144`[[1]]
[1] "S35833936"
   :
   :
   :
数据:


在tidyverse中,您可以使用
tidyr::nest
,它将嵌套数据帧:

库(tidyverse)
df%嵌套(子ID)
#>#tibble:5 x 2
#>拉特隆数据
#>                                
#> 1  29.2178694, -94.934299 
#> 2 26.7063982, -80.7168961 
#> 3 26.6836236, -80.3512144 
#> 4 42.4585456, -76.5146989 
#> 5 26.4330582, -80.9416786 
或者只需使用
list
进行汇总,即可创建向量列表列:

df%>%
组员(拉特隆)%>%
总结所有(列表)
#>#tibble:5 x 2
#>拉特隆亚基
#>                         
#> 1 26.4330582, -80.9416786 
#> 2 26.6836236, -80.3512144 
#> 3 26.7063982, -80.7168961 
#> 4  29.2178694, -94.934299 
#> 5 42.4585456, -76.5146989 

latlon
列的类型是什么,或者实际上有两列?或者,或者。现在它是一个单独的列,latlon,属于
字符类,但我也有(未显示)相同的信息分为两列,
lat
lon
。谢谢。
tidyr::nest(df,subID)
。要仅使用向量,请使用dplyr,
df%>%group\u by(latlon)%%>%summary\u all(list)
或在base中,
聚合(subID~latlon,df,list)
df <- data.frame(ID=c(1,1,2,3,3),
                 name=c('apple', 'orange', 'orange', 'orange', 'apple'))
   with(data,tapply(subID,latlon,as.list))
$`26.4330582 -80.9416786`
$`26.4330582 -80.9416786`[[1]]
[1] "S35834082"

$`26.4330582 -80.9416786`[[2]]
[1] "S35857972"


$`26.6836236 -80.3512144`
$`26.6836236 -80.3512144`[[1]]
[1] "S35833936"
   :
   :
   :
 data=read.table(text="subID latlon
 S20298920 '29.2178694 -94.9342990'
 S35629295 '26.7063982 -80.7168961'
 S35844314 '26.7063982 -80.7168961'
 S35833936 '26.6836236 -80.3512144'
 S30634757 '42.4585456 -76.5146989'
 S35834082 '26.4330582 -80.9416786'
 S35857972 '26.4330582 -80.9416786'
 S35833885 '26.7063982 -80.7168961' ",h=T,stringsAsFactors=F)