我尝试在一组列表上执行操作。例如:
列表:
(1,1,3,3,4,4,4,4,4,4,5,5),
(1,1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
(1,1,1,1,NA,NA,NA,NA,NA,NA,NA,NA),
(1,1,3,3,4,4,4,4,4,4,5,5)
然后我想要一个包含手段的列表。 均值[列表]无法正常运行,因为它不知道如何处理缺失值“NA”。 我的期望是: (1,1,5 / 3,7 / 3,3,4,4等)
有人如何忽略丢失或“文本”值?就像你在excel中运行这样的功能一样。 谢谢!
答案 0 :(得分:2)
l = {{1, 1, 1, "NA", "NA"}, {2, 3, 4, 5, "NA"}}
Mean@# & /@ (Cases[#, Except@"NA"] & /@ l)
(*
-> {1, 7/2}
*)
答案 1 :(得分:2)
看起来你对矩阵列的意思感兴趣。如果您的数据数组是矩形的,您可以执行类似这样的操作
lst = {{1, 1, 1, "NA", "NA"}, {2, 3, 4, 5, "NA"}, {6, 7, 8, 9, 10}};
Mean /@ DeleteCases[Transpose[lst], a_ /; Not[NumericQ[a]], {-1}]
更简单的方法是用"NA"
替换用于不可用元素的任何符号(例如lst
中的Sequence[]
):
Mean /@ (Transpose[lst] /. "NA" -> Sequence[])