[英]Using lapply()-function to find the mean of every row in data frame in R
我有一個包含7個變量的36個觀察值的數據框(技術,行業,2010、2011、2012、2013、2014)。 變量1和2是“因子”類型,變量3、4、5、6和7是帶有某些NA的數字。
我想使用lapply()函數查找每行的平均值(每行變量3、4、5、6和7的平均值),然后使用這些平均值創建新列(cbind)。
可以這樣做嗎,例如使用矩陣和apply()函數,您可以在其中指定行vs列-選擇:
apply(matrix, 1, mean) #will go through all the rows and calculate the mean for each one.
由於OP提到使用lapply/apply/sapply or tapply
,因此使用apply
的解決方案可以是:
df$meanVal <- apply(df[3:7], 1, mean, na.rm = TRUE)
新列meanVal
將包含列3:7
mean
函數rowMeans
將更加高效:
df$meanVal <- rowMeans(df[3:7], na.rm = TRUE)
通常不需要lapply
上使用lapply
,因為apply(dafa,1,fun)
通常可以正常工作。 但是在某些情況下,您可能需要:
lapply(split(data,seq(nrow(data))),fun)
要么 :
by(data,seq(nrow(data)),fun)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.