我对R还是很陌生,我仍然非常接近我认为非常陡峭的学习曲线的底部。所以...
我有一个数据框(从.csv文件导入)。包含许多字段-我们称它们为Field1,Field2,Field3 ... Field 10。
这些字段是数字。对于每行数据,我想计算最低3(例如)数字的平均值。换句话说:
((最小数字)+(第二最小数字)+(第三最小数字))/ 3
数据中还包含一些NA,因此我希望如果实际上没有3个数字求平均值,则计算将返回NA(尽管R仍然会自然地这样做)。
在R中是否有一种简洁的方法,并且(更好)将结果存储为现有数据帧中的新字段?
感谢您的任何建议。 谢谢。
答案 0 :(得分:0)
data(mtcars)
avg3 <- sapply(mtcars, function(x) mean(head(sort(x[!is.na(x)]), 3)))
avg3
mtcars.avg3 <- rbind(mtcars, avg3)
mtcars.avg3
答案 1 :(得分:0)
对于每行数据,我想计算最低3个数字(例如)的平均值。
我认为这应该可以满足您的要求:
data <- mtcars
data$low.mean <- apply(data, 1, function(x) mean(head(sort(x[!is.na(x)]), n = 3)))