我一直在這個夜晚一直在我的頭上靠牆。我有多個數據幀,每個數據幀都具有相同的一般列結構。對於每個數據框,列都帶有一個唯一的「_suffix」。數據幀中有匹配的行。這裏是一個例子:R:在列表中的名稱相似的列上執行計算
cat_list <- c("mpg","spd","wt","price")
car <- c("bmw","mbz","lexus","bmw","mbz","lexus")
src <- c("usa","usa","usa","gb","gb","gb")
mpg_usa <- c(5,11,34,0,0,0)
mpg_gb <- c(0,0,0,44,12,9)
spd_usa <- c(55,13,7,0,0,0)
spd_gb <- c(0,0,0,15,43,67)
df <- data.frame(car, src, mpg_usa, mpg_gb, spd_usa, spd_gb)
我想根據我指定列的列表計算匹配行的平均值。例如,我的候選類別列表是cat_list
。數據幀包含mpg
和spd
。我想爲GB和美國的三種車型分別計算平均車速和平均車速。
我試過幾個不同版本的melt
沒有成功。我想出瞭如何使用此搜索我的列名稱:
avail.cats <- names(df)[grepl(paste(cat_list, collapse = "|"), names(df))]
但是,這顯然不能幫助我崩潰的計算目的。
啞後續 - 但我怎麼安裝'data.table'的devel的版本?我有1.9.4。 – dra
我覺得這很接近。該代碼確實適用於示例數據,但我認爲它不適合我的需要。在'melt'語句中,'mpg'和'spd'是硬編碼的。我想要做的就是在函數'cat_list'中查找匹配的類別(在這種情況下,它應該找到MPG和SPD,但不是重量或價格)。我有一個很長的類別變量列表,並且它們不會在任何給定的時間出現。數據集中的字段將始終是'cat_list'和(全部)'src'(的一個子集)的置換。 – dra
@dra我根據您的評論更新了帖子。 – akrun