【问题标题】:How to remove rows in R with 0 and get averages of remaining rows如何用 0 删除 R 中的行并获取剩余行的平均值
【发布时间】:2015-03-22 02:10:28
【问题描述】:

我想删除数据中的所有 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


另外,我想获得剩余行的平均值。同样,我完全是脚本新手,不知道该做什么。我会根据需要提供更多信息,但这是我现在的完整脚本

【问题讨论】:

    标签: r dataframe average mean data-cleaning


    【解决方案1】:

    要删除所有包含零的行,您可以这样做

    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)
    

    【讨论】:

    • @RHatesMe - 作为替代方案,请尝试rowMeans(na.omit(replace(dat,dat==0,NA)))
    猜你喜欢
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多