簡體   English   中英

在R中使用ddply()函數和in for循環

[英]using ddply() function with in for loop in R

我的問題是關於例如在for循環中如何使用ddply問題。

x<-ddply(data, "variable_name", summarize, event= sum(x)/count(x))

這是正常的ddply但是如果要我在variable_name空間中進行操作,如以下示例所示:

**

數據

** 1. col1,col2,col3,col4
ax 10 1
ax 02 2
ax 40 3
bx 05 8
by 01 10
by 08 6
by 10 8
by 50 6

for(i in 1:2){ result[i]<-ddply(data, name(data[,i]), summarize, event=sum(col3)/count(col4)) }

**

所需的輸出:

**結果[col3]

 1. col1 event  
     a    17.33  
     b 14.80

result[col4] 

 1. col2 event  
     x    14.25  
     y    17.25

您總是可以使用這種方法(有些人可能會認為是hacky)來執行此操作:

for(i in 1:ncol(data)) {
     q <-sprintf("x <- ddply(data, .(%s), summarize, event=sum(x)/count(x))", 
              names(data)[i]) 
     parse(eval(text = q)) 
}

sum(.) / count(.)表示平均值嗎? 我認為summarise不適合count 如果您只想要平均值,我建議您使用mean ,這樣就可以實現

lapply(c("cyl", "gear"), function(var) ddply(mtcars, var, summarize, mean(mpg)))
#[[1]]
#  cyl      ..1
#1   4 26.66364
#2   6 19.74286
#3   8 15.10000
#
#[[2]]
#  gear      ..1
#1    3 16.10667
#2    4 24.53333
#3    5 21.38000

或者等效地,如果您想使用names和索引,則可以將第一個參數替換為

lapply(names(mtcars)[c(2,10)], ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM