如何使用0删除R中的行并获取剩余行的平均值

时间:2015-01-23 04:33:45

标签: r dataframe average mean data-cleaning

我想删除数据中的所有0,并获取剩余值的列的平均值。

dataframe <- ("file.csv")
data_list = lapply (dataframe, read.table, header=TRUE)

我的数据框如下所示:

A B C
1 0 2
2 1 0
3 3 5
4 7 6

我希望我的数据框看起来像这样

A B C
3 3 5
4 7 6

我试过

dataframe[apply(dataframe[c(1:3)],1,function(z) !any(z==0)),]

并收到此错误

Error in apply(dataframe[c(1:3)], 1, function(z) !any(z == 0)) : 
  dim(X) must have a positive length

另外,我想得到其余行的平均值。同样,我完全是脚本编写的新手,并且不知道该怎么做。我将根据需要提供更多信息,但这是我现在的完整脚本

1 个答案:

答案 0 :(得分:3)

要删除包含零的所有行,您可以执行

df[!rowSums(df == 0), ]
#   A B C
# 3 3 3 5
# 4 4 7 6

对于剩余行的行方式,

rowMeans(df[!rowSums(df == 0), ])
#        3        4 
# 3.666667 5.666667 

其中df

df <- read.table(text="A B C
1 0 2
2 1 0
3 3 5
4 7 6", header=TRUE)