Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
替换有x行,数据有x聚合R_R_Aggregate - Fatal编程技术网

替换有x行,数据有x聚合R

替换有x行,数据有x聚合R,r,aggregate,R,Aggregate,我有一个data.frames的列表,mrns[[I]],并希望为每个帧创建一个新变量,mrns[[I]]$avg.hr.prhr,即每小时的平均心率 我的代码和错误: for (i in 1:310) { mrns[[i]]$avg.hr.prhr <- aggregate(raw.Hour ~ raw.HR, data=mrns[[i]], mean) } Error in `$<-.data.frame`(`*tmp*`, "avg.hr.prhr", value = l

我有一个data.frames的列表,
mrns[[I]]
,并希望为每个帧创建一个新变量,
mrns[[I]]$avg.hr.prhr
,即每小时的平均心率

我的代码和错误:

for (i in 1:310) {
  mrns[[i]]$avg.hr.prhr <- aggregate(raw.Hour ~ raw.HR, data=mrns[[i]], mean)
}

Error in `$<-.data.frame`(`*tmp*`, "avg.hr.prhr", value = list(raw.HR = c(46L,  : 
  replacement has 32 rows, data has 93
我还检查了两个data.frames中每个变量的行,它们的行数似乎相同

length(mrns[[1]]$raw.HR)
[1] 93
length(mrns[[1]]$raw.Hour)
[1] 93
有人有什么建议吗

编辑

尝试使用ave而不是聚合:

for (i in 1:310) {
  mrns[[i]]$avg.hr.prhr <- ave(raw.HR ~ raw.Hour , mrns[[i]], FUN=mean)
}

Error in rep(value, length.out = nrows) : 
  attempt to replicate an object of type 'language'
In addition: Warning messages:
1: In split.default(x, g) :
  data length is not a multiple of split variable
2: In split.default(seq_along(x), f, drop = drop, ...) :
  data length is not a multiple of split variable

for (i in 1:310) {
  mrns[[i]]$avg.hr.prhr <- ave(raw.HR, raw.Hour, mrns[[i]])
}

Error in interaction(...) : object 'raw.Hour' not found
for(1:310中的i){

mrns[[i]]$avg.hr.prhr那么
lappy
dplyr

    library(dplyr)
    new_list <- lapply(mrns, function(i) { 
         i %>% group_by(raw.Hour) %>% 
         mutate(avg.hr.prhr = mean(raw.HR)) %>% 
         ungroup()
   })
库(dplyr)
新列表%group\U by(原始小时)%%>%
变异(平均心率prhr=平均值(原始心率))%>%
解组()
})

正在聚合
raw.HR
的重复值。你可能在找
?ave
啊,好电话。我使用了ave而不是AGGRATE,并在unique中得到了
错误。默认值(x,nmax=nmax):unique()仅适用于向量
为ave添加了有趣的选项,用于前面的错误编辑问题。谢谢@pierrelaffortune。我现在在交互中遇到了
错误(…):找不到对象“raw.Hour”
太完美了。谢谢你一直以来的帮助!下次我会记得提供样本数据。再次感谢@pierrelaffortune!不客气。当你更好地使用函数时,试着使用像
lappy
这样的助手。在这种情况下,
lappy(mrns,函数(x)与(x,ave(raw.HR,raw.Hour))
names(mrns[[i]])
 [1] "raw.Number"         "raw.Reading_Status" "raw.Month"          "raw.Day"           
 [5] "raw.Year"           "raw.Hour"           "raw.Minute"         "raw.Systolic"      
 [9] "raw.Diastolic"      "raw.MAP"            "raw.PP"             "raw.HR"            
[13] "raw.Event_Code"     "raw.Edit_Status"    "raw.Diary_Activity" "na.strings"        
[17] "raw.facility"       "raw.lastname"       "raw.firstname"      "raw.id"            
[21] "raw.hookup"         "raw.datetime"       "raw.mrn"            "unis"              
[25] "ar.value"           "ar.cat"             "baseline.visit"     "visit.date.1"      
[29] "total.sleep.time"   "ID"                   
for (i in 1:310) {
  mrns[[i]]$avg.hr.prhr <- with(mrns[[i]], ave(raw.HR, raw.Hour))
}
    library(dplyr)
    new_list <- lapply(mrns, function(i) { 
         i %>% group_by(raw.Hour) %>% 
         mutate(avg.hr.prhr = mean(raw.HR)) %>% 
         ungroup()
   })