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,我搜索了一下,但找不到类似的问题,所以如果我错过了,我道歉。 我的问题其实很简单。我有两个清单,一个大的和一个小的 较小的一个由大列表中数据的平均值组成(有十行) 已聚合形成小列表->其大小为大列表的十分之一)。现在我只想在大列表中添加一个新列(这没问题),然后显示平均值 恢复到原始数据。我知道我会看到平均值十次,但那很好 我试图通过简单的列表比较来解决这个“问题”,例如(相关的平均值以及原始数据在第一列中具有相同的标识符): 生成的小列表: 10_Ident|Minute_average| J

我搜索了一下,但找不到类似的问题,所以如果我错过了,我道歉。 我的问题其实很简单。我有两个清单,一个大的和一个小的

较小的一个由大列表中数据的平均值组成(有十行) 已聚合形成小列表->其大小为大列表的十分之一)。现在我只想在大列表中添加一个新列(这没问题),然后显示平均值 恢复到原始数据。我知道我会看到平均值十次,但那很好

我试图通过简单的列表比较来解决这个“问题”,例如(相关的平均值以及原始数据在第一列中具有相同的标识符):

生成的小列表:

10_Ident|Minute_average|
July1-0d|       1
July1-1d|      1.5
July1-2d|       3
July1-3d|       2
预期结果: 大列表:

1_Ident |10_Ident|Minute_value|Minute_average|
 July1-0| July1-0d|       1          1
 July1-2| July1-0d|       1          1
   (..)
July1-10| July1-0d|       1          1
July1-11| July1-1d|       1         1.5
July1-12| July1-1d|       2         1.5
July1-21| July1-21|       3          3
July1-31| July1-31|       2          2
我认为主要的问题是小列表$Minute\u平均向量与大列表$Minute\u值向量的大小不同。如前所述,可以通过循环逐行比较两个列表,但表的大小大于1M行,因此这不起作用

我想做的基本上是: 1) 查看
大列表$10_Ident
并比较
小列表$10_Ident

2) 如果值匹配,将相应的
小列表$Minute\u average
值转移到
大列表$Minute\u average

谢谢

您可以使用
match
merge
来实现这一点,但为什么不直接计算分组的平均值呢

Large_List$Average_column <- ave(Large_List$col_to_be_avgd, 
                                 Large_List$group_var, 
                                 FUN=mean, na.rm=TRUE)

欢迎加入!请提供一份报告。查找
?match
%in%
和/或
?rep
。只要它始终是10个连续元素的平均值,那么创建向量
平均值怎么样谢谢你的建议!完美,完美,完美,正是我所需要的!
1_Ident |10_Ident|Minute_value|Minute_average|
 July1-0| July1-0d|       1          1
 July1-2| July1-0d|       1          1
   (..)
July1-10| July1-0d|       1          1
July1-11| July1-1d|       1         1.5
July1-12| July1-1d|       2         1.5
July1-21| July1-21|       3          3
July1-31| July1-31|       2          2
Large_List$Average_column <- ave(Large_List$col_to_be_avgd, 
                                 Large_List$group_var, 
                                 FUN=mean, na.rm=TRUE)
merge( Large_List, Small_List[c('identifier', "Average"], by='identifier' , all.x=TRUE)