我想删除数据中的所有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
另外,我想得到其余行的平均值。同样,我完全是脚本编写的新手,并且不知道该怎么做。我将根据需要提供更多信息,但这是我现在的完整脚本
答案 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)